Version Description
- 2014-03-25 =
- Fixed a conflict with the "Ultimate Shortcode" plugin breaking our subscription forms
- Fixed automatically inserted text in confirmation/subscription pages
- Improved CSV special characters handling in the Subscribers import functionality
- Improved some of our warnings in the backend to make the messages clearer
- Improved MailPoet Statistics Page with styling compatible to WordPress v3.8
- Improved handling Big Databases on daily post notifications
- Added extra information in the Newsletters' statistics page for an efficient summary
- Added German Disclaimer to a new Docs Folder for legal purpose
- Minor changes improving the User Experience in some of our Forms in the backend
- Replaced The autoselection script "Choosen" in favor of "Select2" (JavaScript Library)
Download this release
Release Info
Developer | wysija |
Plugin | MailPoet Newsletters (Previous) |
Version | 2.6.1 |
Comparing to | |
See all releases |
Code changes from version 2.6.8 to 2.6.1
- add-ons/add-ons-list.php +120 -118
- add-ons/add-ons.php +164 -155
- classes/WJ_Export.php +1 -2
- classes/WJ_Field.php +257 -248
- classes/WJ_Import.php +9 -12
- classes/WJ_Stats.php +6 -6
- classes/WJ_Upgrade.php +9 -51
- controllers/ajax/campaigns.php +951 -998
- controllers/ajax/statistics.php +72 -81
- controllers/ajax/tmce.php +139 -138
- controllers/back.php +1 -1
- controllers/back/campaigns.php +2730 -2744
- controllers/back/config.php +7 -4
- controllers/back/statistics.php +169 -190
- controllers/back/subscribers.php +8 -41
- controllers/front/stats.php +4 -25
- core/base.php +1476 -1578
- core/model.php +1032 -1028
- core/module/module.php +38 -38
- core/view.php +1 -7
- css/admin-campaigns-dividers.css +1 -1
- css/admin-campaigns-medias.css +1 -1
- css/admin-campaigns-viewstats.css +1 -1
- css/admin-campaigns.css +1 -1
- css/admin-config.css +1 -1
- css/admin-premium.css +1 -1
- css/admin-statistics.css +1 -1
- css/admin.css +1 -1
- css/adminPopup.css +1 -1
- css/qtip2/jquery.qtip.min.css +2 -0
- css/tmce/editor.css +0 -2317
- css/vendor/bootstrap.tooltip.css +0 -101
- css/wysija-editor.css +1 -1
- helpers/articles.php +12 -21
- helpers/back.php +39 -48
- helpers/backloader.php +14 -106
- helpers/bounce.php +2 -1
- helpers/campaigns.php +44 -48
- helpers/email.php +2 -2
- helpers/install.php +13 -16
- helpers/licence.php +1 -1
- helpers/render_engine.php +3 -22
- helpers/server.php +4 -4
- helpers/update.php +11 -66
- helpers/user.php +14 -13
- helpers/wj_engine.php +1454 -1615
- helpers/wp_tools.php +335 -322
- img/controls/image-placeholder.png +0 -0
- index.php +3 -3
- js/admin-campaigns-articles.js +1 -1
- js/admin-campaigns-autopost.js +1 -1
- js/admin-campaigns-editDetails.js +1 -1
- js/admin-config-settings.js +1 -1
- js/admin-global.js +1 -1
- js/jquery/pluploadHandler.js +3 -16
- js/jquery/uploadHandlers.js +1 -0
- js/qtip2/jquery.qtip.min.js +5 -0
- js/tinymce/tiny_mce.js +0 -1
add-ons/add-ons-list.php
CHANGED
@@ -8,46 +8,30 @@ function add_ons_list(){
|
|
8 |
'name' => 'WooCommerce: Subscribe on Checkout',
|
9 |
'search' => 'MailPoet WooCommerce Add-on',
|
10 |
'thumbnail' => 'woocommerce.png',
|
11 |
-
'description' => __(
|
12 |
'plugin_url' => 'mailpoet-woocommerce-addon/mailpoet-woocommerce-addon.php',
|
13 |
'version' => '1.0.2',
|
14 |
'config_url' => 'admin.php?page=woocommerce_settings&tab=mailpoet',
|
15 |
-
'official' =>
|
16 |
-
'on_wordpress.org' =>
|
17 |
-
'free' =>
|
18 |
-
'service' =>
|
19 |
'requires' => 'woocommerce/woocommerce.php',
|
20 |
'requires_name' => 'WooCommerce',
|
21 |
),
|
22 |
|
23 |
-
array(
|
24 |
-
'name' => 'Autoresponders for WooCommerce Products',
|
25 |
-
'search' => 'Autoresponders for WooCommerce Products',
|
26 |
-
'thumbnail' => 'woocommerce.png',
|
27 |
-
'description' => __( 'Decide which emails a new customer gets automatically, based on the product he just purchased. This a Premium add-on for WooCommerce.', WYSIJA ),
|
28 |
-
'review' => '',
|
29 |
-
'plugin_url' => '',
|
30 |
-
'author_url' => 'http://clicky.me/woocommerce-autoresponder',
|
31 |
-
'purchase_url' => 'http://clicky.me/woocommerce-autoresponder',
|
32 |
-
'version' => '1.0.1',
|
33 |
-
'official' => true,
|
34 |
-
'on_wordpress.org' => false,
|
35 |
-
'free' => false,
|
36 |
-
'service' => false,
|
37 |
-
),
|
38 |
-
|
39 |
array(
|
40 |
'name' => 'Jigoshop: Subscribe on Checkout',
|
41 |
'search' => 'MailPoet Jigoshop Add-on',
|
42 |
'thumbnail' => 'jigoshop.png',
|
43 |
-
'description' => __(
|
44 |
'plugin_url' => 'mailpoet-jigoshop-addon/mailpoet-jigoshop-addon.php',
|
45 |
'version' => '1.0.3',
|
46 |
'config_url' => 'admin.php?page=jigoshop_settings&tab=mailpoet',
|
47 |
-
'official' =>
|
48 |
-
'on_wordpress.org' =>
|
49 |
-
'free' =>
|
50 |
-
'service' =>
|
51 |
'requires' => 'jigoshop/jigoshop.php',
|
52 |
'requires_name' => 'Jigoshop',
|
53 |
),
|
@@ -56,13 +40,13 @@ function add_ons_list(){
|
|
56 |
'name' => 'Gravity Forms: Subscribe Add-on',
|
57 |
'search' => 'MailPoet Gravity Forms Add-on',
|
58 |
'thumbnail' => 'gravity-forms.png',
|
59 |
-
'description' => __(
|
60 |
'plugin_url' => 'mailpoet-gravity-forms-addon/mailpoet-gravity-forms-addon.php',
|
61 |
'version' => '1.0.0',
|
62 |
-
'official' =>
|
63 |
-
'on_wordpress.org' =>
|
64 |
-
'free' =>
|
65 |
-
'service' =>
|
66 |
'requires' => 'gravityforms/gravityforms.php',
|
67 |
'requires_name' => 'Gravity Forms',
|
68 |
),
|
@@ -71,14 +55,14 @@ function add_ons_list(){
|
|
71 |
'name' => 'WP e-Commerce: Subscribe on Checkout',
|
72 |
'search' => 'MailPoet WP e-Commerce Add-on',
|
73 |
'thumbnail' => 'wp-e-commerce.png',
|
74 |
-
'description' => __(
|
75 |
'plugin_url' => 'mailpoet-wp-ecommerce-addon/mailpoet-wp-ecommerce-addon.php',
|
76 |
'version' => '1.0.0',
|
77 |
'config_url' => 'edit.php?post_type=wpsc-product&page=mailpoet',
|
78 |
-
'official' =>
|
79 |
-
'on_wordpress.org' =>
|
80 |
-
'free' =>
|
81 |
-
'service' =>
|
82 |
'requires' => 'wp-e-commerce/wp-shopping-cart.php',
|
83 |
'requires_name' => 'WP e-Commerce',
|
84 |
),
|
@@ -87,13 +71,13 @@ function add_ons_list(){
|
|
87 |
'name' => 'Restrict Content Pro: Registration Add-on',
|
88 |
'search' => 'Restrict Content Pro Wysija',
|
89 |
'thumbnail' => 'pippins.png',
|
90 |
-
'description' => __(
|
91 |
'plugin_url' => 'restrict-content-pro-wysija/rcp-wysija.php',
|
92 |
'version' => '1.0',
|
93 |
-
'official' =>
|
94 |
-
'on_wordpress.org' =>
|
95 |
-
'free' =>
|
96 |
-
'service' =>
|
97 |
'requires' => 'restrict-content-pro/restrict-content-pro.php',
|
98 |
'requires_name' => 'Restrict Content Pro',
|
99 |
),
|
@@ -102,14 +86,14 @@ function add_ons_list(){
|
|
102 |
'name' => 'Contact Form 7: MailPoet Add-on',
|
103 |
'search' => 'MailPoet Contact Form 7',
|
104 |
'thumbnail' => 'cf7.png',
|
105 |
-
'description' => __(
|
106 |
'plugin_url' => 'mailpoet-contact-form-7/mailpoet-contact-form-7.php',
|
107 |
'author_url' => '',
|
108 |
'version' => '1.0.0',
|
109 |
-
'official' =>
|
110 |
-
'on_wordpress.org' =>
|
111 |
-
'free' =>
|
112 |
-
'service' =>
|
113 |
'requires' => 'contact-form-7/wp-contact-form-7.php',
|
114 |
'requires_name' => 'Contact Form 7',
|
115 |
),
|
@@ -118,15 +102,15 @@ function add_ons_list(){
|
|
118 |
'name' => 'WangGuard: MailPoet Connector',
|
119 |
'search' => 'WangGuard Wysija Newsletter Connector',
|
120 |
'thumbnail' => 'wangguard.png',
|
121 |
-
'description' => __(
|
122 |
-
'review' => __(
|
123 |
'plugin_url' => 'wangguard-wysija-newsletter-connector/wangguard-wysija.php',
|
124 |
'author_url' => 'http://clicky.me/wangguard',
|
125 |
'version' => '1.0.0',
|
126 |
-
'official' =>
|
127 |
-
'on_wordpress.org' =>
|
128 |
-
'free' =>
|
129 |
-
'service' =>
|
130 |
'requires' => '',
|
131 |
),
|
132 |
|
@@ -134,29 +118,29 @@ function add_ons_list(){
|
|
134 |
'name' => 'Leaky Paywall: MailPoet Add-on',
|
135 |
'search' => 'Leaky Paywall: MailPoet Add-on',
|
136 |
'thumbnail' => 'leakypw.png',
|
137 |
-
'description' => __(
|
138 |
'plugin_url' => 'leaky-paywall-mail-poet/issuem-leaky-paywall-mailpoet.php',
|
139 |
'author_url' => 'http://clicky.me/leakypw',
|
140 |
'version' => '1.0.0',
|
141 |
-
'official' =>
|
142 |
-
'on_wordpress.org' =>
|
143 |
-
'free' =>
|
144 |
-
'service' =>
|
145 |
),
|
146 |
|
147 |
array(
|
148 |
'name' => 'GetConversion: Bar and Box Forms Add-on',
|
149 |
'search' => 'GC MailPoet EX',
|
150 |
'thumbnail' => 'getconversion.png',
|
151 |
-
'description' => __(
|
152 |
-
'review' => __(
|
153 |
'plugin_url' => 'gc-message-bar/main.php',
|
154 |
'author_url' => 'http://clicky.me/GC-add-on',
|
155 |
'version' => '1.0.0',
|
156 |
-
'official' =>
|
157 |
-
'on_wordpress.org' =>
|
158 |
-
'free' =>
|
159 |
-
'service' =>
|
160 |
),
|
161 |
|
162 |
/* Below is the list of services that work with MailPoet */
|
@@ -165,34 +149,34 @@ function add_ons_list(){
|
|
165 |
'name' => 'OptinMonster: Slick Forms',
|
166 |
'search' => 'OptinMonster: slick forms',
|
167 |
'thumbnail' => 'optinmonster.png',
|
168 |
-
'description' => __(
|
169 |
-
'review' => __(
|
170 |
'plugin_url' => '',
|
171 |
'author_url' => 'http://clicky.me/optinmonsteraddon',
|
172 |
'purchase_url' => '',
|
173 |
'version' => '',
|
174 |
-
'official' =>
|
175 |
-
'on_wordpress.org' =>
|
176 |
-
'free' =>
|
177 |
-
'service' =>
|
178 |
-
'premium_offer' => __(
|
179 |
),
|
180 |
|
181 |
array(
|
182 |
'name' => 'Pippity: Form in a Popup',
|
183 |
'search' => 'Pippity: form in a popup',
|
184 |
'thumbnail' => 'pippity.png',
|
185 |
-
'description' => __(
|
186 |
-
'review' => __(
|
187 |
'plugin_url' => '',
|
188 |
'author_url' => 'http://clicky.me/pippity',
|
189 |
'purchase_url' => '',
|
190 |
'version' => '',
|
191 |
-
'official' =>
|
192 |
-
'on_wordpress.org' =>
|
193 |
-
'free' =>
|
194 |
-
'service' =>
|
195 |
-
'premium_offer' => __(
|
196 |
),
|
197 |
|
198 |
|
@@ -200,16 +184,16 @@ function add_ons_list(){
|
|
200 |
'name' => 'Hybrid Connect: Forms and Facebook',
|
201 |
'search' => 'Hybrid Connect: forms and Facebook',
|
202 |
'thumbnail' => 'hybrid-connect.png',
|
203 |
-
'description' => __(
|
204 |
-
'review' => __(
|
205 |
'plugin_url' => '',
|
206 |
'author_url' => 'http://clicky.me/hybrid-connect',
|
207 |
'purchase_url' => '',
|
208 |
'version' => '',
|
209 |
-
'official' =>
|
210 |
-
'on_wordpress.org' =>
|
211 |
-
'free' =>
|
212 |
-
'service' =>
|
213 |
'premium_offer' => '',
|
214 |
),
|
215 |
|
@@ -217,16 +201,16 @@ function add_ons_list(){
|
|
217 |
'name' => 'Magic Action Box: Pretty forms in post',
|
218 |
'search' => 'Magic Action Box: pretty forms in post',
|
219 |
'thumbnail' => 'magic-action-box.png',
|
220 |
-
'description' => __(
|
221 |
-
'review' => __(
|
222 |
'plugin_url' => '',
|
223 |
'author_url' => 'http://clicky.me/magic-action-box',
|
224 |
'purchase_url' => '',
|
225 |
'version' => '',
|
226 |
-
'official' =>
|
227 |
-
'on_wordpress.org' =>
|
228 |
-
'free' =>
|
229 |
-
'service' =>
|
230 |
'premium_offer' => '',
|
231 |
),
|
232 |
|
@@ -234,16 +218,16 @@ function add_ons_list(){
|
|
234 |
'name' => 'Optin Revolution: Popup form',
|
235 |
'search' => 'Optin Revolution: popup form',
|
236 |
'thumbnail' => 'optin-revolution.png',
|
237 |
-
'description' => __(
|
238 |
-
'review' => __(
|
239 |
'plugin_url' => '',
|
240 |
'author_url' => 'http://clicky.me/optin-revolution',
|
241 |
'purchase_url' => '',
|
242 |
'version' => '',
|
243 |
-
'official' =>
|
244 |
-
'on_wordpress.org' =>
|
245 |
-
'free' =>
|
246 |
-
'service' =>
|
247 |
'premium_offer' => '',
|
248 |
),
|
249 |
|
@@ -251,33 +235,33 @@ function add_ons_list(){
|
|
251 |
'name' => 'Ultimate Coming Soon Page',
|
252 |
'search' => 'Ultimate Coming Soon Page',
|
253 |
'thumbnail' => 'ultimate-coming-soon.png',
|
254 |
-
'description' => __(
|
255 |
-
'review' => __(
|
256 |
'plugin_url' => '',
|
257 |
'author_url' => 'http://clicky.me/coming-soon',
|
258 |
'purchase_url' => '',
|
259 |
'version' => '',
|
260 |
-
'official' =>
|
261 |
-
'on_wordpress.org' =>
|
262 |
-
'free' =>
|
263 |
-
'service' =>
|
264 |
-
'premium_offer' => __(
|
265 |
),
|
266 |
|
267 |
array(
|
268 |
'name' => 'Plugmatter: form below your header',
|
269 |
'search' => 'Plugmatter',
|
270 |
'thumbnail' => 'plugmatter.png',
|
271 |
-
'description' => __(
|
272 |
'review' => '',
|
273 |
'plugin_url' => '',
|
274 |
'author_url' => 'http://clicky.me/plugmatter',
|
275 |
'purchase_url' => '',
|
276 |
'version' => '',
|
277 |
-
'official' =>
|
278 |
-
'on_wordpress.org' =>
|
279 |
-
'free' =>
|
280 |
-
'service' =>
|
281 |
'premium_offer' => '',
|
282 |
),
|
283 |
|
@@ -285,16 +269,16 @@ function add_ons_list(){
|
|
285 |
'name' => 'EDD: MailPoet: Subscribe on Checkout',
|
286 |
'search' => 'Easy Digital Downloads - MailPoet',
|
287 |
'thumbnail' => 'easy-digital-downloads.png',
|
288 |
-
'description' => __(
|
289 |
'review' => '',
|
290 |
'plugin_url' => '',
|
291 |
'author_url' => 'http://clicky.me/easy-digital-downloads',
|
292 |
'purchase_url' => 'http://clicky.me/easy-digital-downloads',
|
293 |
'version' => '1.1.2',
|
294 |
-
'official' =>
|
295 |
-
'on_wordpress.org' =>
|
296 |
-
'free' =>
|
297 |
-
'service' =>
|
298 |
'requires' => 'easy-digital-downloads/easy-digital-downloads.php',
|
299 |
'requires_name' => 'Easy Digital Downloads',
|
300 |
'premium_offer' => '',
|
@@ -304,21 +288,39 @@ function add_ons_list(){
|
|
304 |
'name' => 'Ninja Forms: Subscribe Add-on',
|
305 |
'search' => 'Ninja Forms: Subscribe Add-on',
|
306 |
'thumbnail' => 'ninja-forms.png',
|
307 |
-
'description' => __(
|
308 |
'review' => '',
|
309 |
'plugin_url' => 'ninja-forms-mailpoet/nf-mailpoet.php',
|
310 |
'author_url' => 'http://clicky.me/ninja-forms',
|
311 |
'purchase_url' => 'http://clicky.me/ninja-forms',
|
312 |
'version' => '1.0.1',
|
313 |
-
'official' =>
|
314 |
-
'on_wordpress.org' =>
|
315 |
-
'free' =>
|
316 |
-
'service' =>
|
317 |
'requires' => 'ninja-forms/ninja-forms.php',
|
318 |
'requires_name' => 'Ninja Forms',
|
319 |
'premium_offer' => '',
|
320 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
);
|
322 |
|
323 |
return $available_add_ons;
|
324 |
-
}
|
|
8 |
'name' => 'WooCommerce: Subscribe on Checkout',
|
9 |
'search' => 'MailPoet WooCommerce Add-on',
|
10 |
'thumbnail' => 'woocommerce.png',
|
11 |
+
'description' => __('Add a checkbox on checkout page for your customers to subscribe to your MailPoet newsletters.', WYSIJA),
|
12 |
'plugin_url' => 'mailpoet-woocommerce-addon/mailpoet-woocommerce-addon.php',
|
13 |
'version' => '1.0.2',
|
14 |
'config_url' => 'admin.php?page=woocommerce_settings&tab=mailpoet',
|
15 |
+
'official' => 'yes',
|
16 |
+
'on_wordpress.org' => 'yes',
|
17 |
+
'free' => 'yes',
|
18 |
+
'service' => 'no',
|
19 |
'requires' => 'woocommerce/woocommerce.php',
|
20 |
'requires_name' => 'WooCommerce',
|
21 |
),
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
array(
|
24 |
'name' => 'Jigoshop: Subscribe on Checkout',
|
25 |
'search' => 'MailPoet Jigoshop Add-on',
|
26 |
'thumbnail' => 'jigoshop.png',
|
27 |
+
'description' => __('Add a checkbox on checkout page for your customers to subscribe to your MailPoet newsletters.', WYSIJA),
|
28 |
'plugin_url' => 'mailpoet-jigoshop-addon/mailpoet-jigoshop-addon.php',
|
29 |
'version' => '1.0.3',
|
30 |
'config_url' => 'admin.php?page=jigoshop_settings&tab=mailpoet',
|
31 |
+
'official' => 'yes',
|
32 |
+
'on_wordpress.org' => 'yes',
|
33 |
+
'free' => 'yes',
|
34 |
+
'service' => 'no',
|
35 |
'requires' => 'jigoshop/jigoshop.php',
|
36 |
'requires_name' => 'Jigoshop',
|
37 |
),
|
40 |
'name' => 'Gravity Forms: Subscribe Add-on',
|
41 |
'search' => 'MailPoet Gravity Forms Add-on',
|
42 |
'thumbnail' => 'gravity-forms.png',
|
43 |
+
'description' => __('Add a new field to add to your forms so your visitors can subscriber to your MailPoet newsletters.', WYSIJA),
|
44 |
'plugin_url' => 'mailpoet-gravity-forms-addon/mailpoet-gravity-forms-addon.php',
|
45 |
'version' => '1.0.0',
|
46 |
+
'official' => 'yes',
|
47 |
+
'on_wordpress.org' => 'yes',
|
48 |
+
'free' => 'yes',
|
49 |
+
'service' => 'no',
|
50 |
'requires' => 'gravityforms/gravityforms.php',
|
51 |
'requires_name' => 'Gravity Forms',
|
52 |
),
|
55 |
'name' => 'WP e-Commerce: Subscribe on Checkout',
|
56 |
'search' => 'MailPoet WP e-Commerce Add-on',
|
57 |
'thumbnail' => 'wp-e-commerce.png',
|
58 |
+
'description' => __('Add a checkbox on checkout page for your customers to subscribe to your MailPoet newsletters.', WYSIJA),
|
59 |
'plugin_url' => 'mailpoet-wp-ecommerce-addon/mailpoet-wp-ecommerce-addon.php',
|
60 |
'version' => '1.0.0',
|
61 |
'config_url' => 'edit.php?post_type=wpsc-product&page=mailpoet',
|
62 |
+
'official' => 'yes',
|
63 |
+
'on_wordpress.org' => 'yes',
|
64 |
+
'free' => 'yes',
|
65 |
+
'service' => 'no',
|
66 |
'requires' => 'wp-e-commerce/wp-shopping-cart.php',
|
67 |
'requires_name' => 'WP e-Commerce',
|
68 |
),
|
71 |
'name' => 'Restrict Content Pro: Registration Add-on',
|
72 |
'search' => 'Restrict Content Pro Wysija',
|
73 |
'thumbnail' => 'pippins.png',
|
74 |
+
'description' => __('Add a checkbox on the registration form of this plugin so your new users join a list of your choice.', WYSIJA),
|
75 |
'plugin_url' => 'restrict-content-pro-wysija/rcp-wysija.php',
|
76 |
'version' => '1.0',
|
77 |
+
'official' => 'yes',
|
78 |
+
'on_wordpress.org' => 'yes',
|
79 |
+
'free' => 'yes',
|
80 |
+
'service' => 'no',
|
81 |
'requires' => 'restrict-content-pro/restrict-content-pro.php',
|
82 |
'requires_name' => 'Restrict Content Pro',
|
83 |
),
|
86 |
'name' => 'Contact Form 7: MailPoet Add-on',
|
87 |
'search' => 'MailPoet Contact Form 7',
|
88 |
'thumbnail' => 'cf7.png',
|
89 |
+
'description' => __('Add a checkbox in your forms, and choose which lists the user gets added to.', WYSIJA),
|
90 |
'plugin_url' => 'mailpoet-contact-form-7/mailpoet-contact-form-7.php',
|
91 |
'author_url' => '',
|
92 |
'version' => '1.0.0',
|
93 |
+
'official' => 'yes',
|
94 |
+
'on_wordpress.org' => 'yes',
|
95 |
+
'free' => 'yes',
|
96 |
+
'service' => 'no',
|
97 |
'requires' => 'contact-form-7/wp-contact-form-7.php',
|
98 |
'requires_name' => 'Contact Form 7',
|
99 |
),
|
102 |
'name' => 'WangGuard: MailPoet Connector',
|
103 |
'search' => 'WangGuard Wysija Newsletter Connector',
|
104 |
'thumbnail' => 'wangguard.png',
|
105 |
+
'description' => __('Stop fake signups by robots with WangGuard, a free white listing service, and plugin.', WYSIJA),
|
106 |
+
'review' => __('If you have this problem, then this is your solution. Totally free too.', WYSIJA),
|
107 |
'plugin_url' => 'wangguard-wysija-newsletter-connector/wangguard-wysija.php',
|
108 |
'author_url' => 'http://clicky.me/wangguard',
|
109 |
'version' => '1.0.0',
|
110 |
+
'official' => 'yes',
|
111 |
+
'on_wordpress.org' => 'yes',
|
112 |
+
'free' => 'yes',
|
113 |
+
'service' => 'no',
|
114 |
'requires' => '',
|
115 |
),
|
116 |
|
118 |
'name' => 'Leaky Paywall: MailPoet Add-on',
|
119 |
'search' => 'Leaky Paywall: MailPoet Add-on',
|
120 |
'thumbnail' => 'leakypw.png',
|
121 |
+
'description' => __('Leaky Paywall is a Premium plugin to put content behind a paywall. This add-on manages your customers\' customers subscriptions.', WYSIJA),
|
122 |
'plugin_url' => 'leaky-paywall-mail-poet/issuem-leaky-paywall-mailpoet.php',
|
123 |
'author_url' => 'http://clicky.me/leakypw',
|
124 |
'version' => '1.0.0',
|
125 |
+
'official' => 'yes',
|
126 |
+
'on_wordpress.org' => 'yes',
|
127 |
+
'free' => 'yes',
|
128 |
+
'service' => 'no',
|
129 |
),
|
130 |
|
131 |
array(
|
132 |
'name' => 'GetConversion: Bar and Box Forms Add-on',
|
133 |
'search' => 'GC MailPoet EX',
|
134 |
'thumbnail' => 'getconversion.png',
|
135 |
+
'description' => __('Put a form in a top or bottom bar of your site, or in a nice box within your posts with GetConversion\'s free plugins. Connect them to MailPoet with this add-on.', WYSIJA),
|
136 |
+
'review' => __('Try it yourself, we were impressed by the free versions.', WYSIJA),
|
137 |
'plugin_url' => 'gc-message-bar/main.php',
|
138 |
'author_url' => 'http://clicky.me/GC-add-on',
|
139 |
'version' => '1.0.0',
|
140 |
+
'official' => 'yes',
|
141 |
+
'on_wordpress.org' => 'yes',
|
142 |
+
'free' => 'yes',
|
143 |
+
'service' => 'no',
|
144 |
),
|
145 |
|
146 |
/* Below is the list of services that work with MailPoet */
|
149 |
'name' => 'OptinMonster: Slick Forms',
|
150 |
'search' => 'OptinMonster: slick forms',
|
151 |
'thumbnail' => 'optinmonster.png',
|
152 |
+
'description' => __('Put a subscription form in a popup, footer bar or slide-in to add subscribers with this Premium plugin.', WYSIJA),
|
153 |
+
'review' => __('The authors have done a pretty awesome job.', WYSIJA),
|
154 |
'plugin_url' => '',
|
155 |
'author_url' => 'http://clicky.me/optinmonsteraddon',
|
156 |
'purchase_url' => '',
|
157 |
'version' => '',
|
158 |
+
'official' => 'no',
|
159 |
+
'on_wordpress.org' => 'no',
|
160 |
+
'free' => 'no',
|
161 |
+
'service' => 'yes',
|
162 |
+
'premium_offer' => __('Premium users save 20% with this coupon: MP20', WYSIJA),
|
163 |
),
|
164 |
|
165 |
array(
|
166 |
'name' => 'Pippity: Form in a Popup',
|
167 |
'search' => 'Pippity: form in a popup',
|
168 |
'thumbnail' => 'pippity.png',
|
169 |
+
'description' => __('This Premium plugin allows you to add a MailPoet form in a popup.', WYSIJA),
|
170 |
+
'review' => __('You\'ll need to know CSS to design it to your taste.', WYSIJA),
|
171 |
'plugin_url' => '',
|
172 |
'author_url' => 'http://clicky.me/pippity',
|
173 |
'purchase_url' => '',
|
174 |
'version' => '',
|
175 |
+
'official' => 'no',
|
176 |
+
'on_wordpress.org' => 'no',
|
177 |
+
'free' => 'no',
|
178 |
+
'service' => 'yes',
|
179 |
+
'premium_offer' => __('Premium users save 20% with this coupon: mailpoet25', WYSIJA),
|
180 |
),
|
181 |
|
182 |
|
184 |
'name' => 'Hybrid Connect: Forms and Facebook',
|
185 |
'search' => 'Hybrid Connect: forms and Facebook',
|
186 |
'thumbnail' => 'hybrid-connect.png',
|
187 |
+
'description' => __('This Premium plugin allows you to add MailPoet\'s forms in many places, and in Facebook.', WYSIJA),
|
188 |
+
'review' => __('Very powerful, if not a quirky user interface.', WYSIJA),
|
189 |
'plugin_url' => '',
|
190 |
'author_url' => 'http://clicky.me/hybrid-connect',
|
191 |
'purchase_url' => '',
|
192 |
'version' => '',
|
193 |
+
'official' => 'no',
|
194 |
+
'on_wordpress.org' => 'no',
|
195 |
+
'free' => 'no',
|
196 |
+
'service' => 'yes',
|
197 |
'premium_offer' => '',
|
198 |
),
|
199 |
|
201 |
'name' => 'Magic Action Box: Pretty forms in post',
|
202 |
'search' => 'Magic Action Box: pretty forms in post',
|
203 |
'thumbnail' => 'magic-action-box.png',
|
204 |
+
'description' => __('This free plugin allows you to design and position a form at the beginning or bottom of a post.', WYSIJA),
|
205 |
+
'review' => __('It\'s free, and has proven popular with our users.', WYSIJA),
|
206 |
'plugin_url' => '',
|
207 |
'author_url' => 'http://clicky.me/magic-action-box',
|
208 |
'purchase_url' => '',
|
209 |
'version' => '',
|
210 |
+
'official' => 'no',
|
211 |
+
'on_wordpress.org' => 'no',
|
212 |
+
'free' => 'no',
|
213 |
+
'service' => 'yes',
|
214 |
'premium_offer' => '',
|
215 |
),
|
216 |
|
218 |
'name' => 'Optin Revolution: Popup form',
|
219 |
'search' => 'Optin Revolution: popup form',
|
220 |
'thumbnail' => 'optin-revolution.png',
|
221 |
+
'description' => __('This free plugin allows you to put a form in a popup, that\'s it.', WYSIJA),
|
222 |
+
'review' => __('This is the free version of a more powerful Premium version.', WYSIJA),
|
223 |
'plugin_url' => '',
|
224 |
'author_url' => 'http://clicky.me/optin-revolution',
|
225 |
'purchase_url' => '',
|
226 |
'version' => '',
|
227 |
+
'official' => 'no',
|
228 |
+
'on_wordpress.org' => 'no',
|
229 |
+
'free' => 'no',
|
230 |
+
'service' => 'yes',
|
231 |
'premium_offer' => '',
|
232 |
),
|
233 |
|
235 |
'name' => 'Ultimate Coming Soon Page',
|
236 |
'search' => 'Ultimate Coming Soon Page',
|
237 |
'thumbnail' => 'ultimate-coming-soon.png',
|
238 |
+
'description' => __('Your new site is not yet launched? Put a coming soon page with a form to capture emails with this Premium plugin.', WYSIJA),
|
239 |
+
'review' => __('A well designed plugin for a simple idea.', WYSIJA),
|
240 |
'plugin_url' => '',
|
241 |
'author_url' => 'http://clicky.me/coming-soon',
|
242 |
'purchase_url' => '',
|
243 |
'version' => '',
|
244 |
+
'official' => 'no',
|
245 |
+
'on_wordpress.org' => 'no',
|
246 |
+
'free' => 'no',
|
247 |
+
'service' => 'yes',
|
248 |
+
'premium_offer' => __('Premium users save 20% with this coupon: MAILPOET20', WYSIJA),
|
249 |
),
|
250 |
|
251 |
array(
|
252 |
'name' => 'Plugmatter: form below your header',
|
253 |
'search' => 'Plugmatter',
|
254 |
'thumbnail' => 'plugmatter.png',
|
255 |
+
'description' => __('This Premium plugin allows you to put a pretty form right below the header. Nothing more, nothing less.', WYSIJA),
|
256 |
'review' => '',
|
257 |
'plugin_url' => '',
|
258 |
'author_url' => 'http://clicky.me/plugmatter',
|
259 |
'purchase_url' => '',
|
260 |
'version' => '',
|
261 |
+
'official' => 'no',
|
262 |
+
'on_wordpress.org' => 'no',
|
263 |
+
'free' => 'no',
|
264 |
+
'service' => 'yes',
|
265 |
'premium_offer' => '',
|
266 |
),
|
267 |
|
269 |
'name' => 'EDD: MailPoet: Subscribe on Checkout',
|
270 |
'search' => 'Easy Digital Downloads - MailPoet',
|
271 |
'thumbnail' => 'easy-digital-downloads.png',
|
272 |
+
'description' => __('A checkbox is added as option for your customers to signup for your newsletter while purchasing from your digital store.', WYSIJA),
|
273 |
'review' => '',
|
274 |
'plugin_url' => '',
|
275 |
'author_url' => 'http://clicky.me/easy-digital-downloads',
|
276 |
'purchase_url' => 'http://clicky.me/easy-digital-downloads',
|
277 |
'version' => '1.1.2',
|
278 |
+
'official' => 'no',
|
279 |
+
'on_wordpress.org' => 'no',
|
280 |
+
'free' => 'no',
|
281 |
+
'service' => 'no',
|
282 |
'requires' => 'easy-digital-downloads/easy-digital-downloads.php',
|
283 |
'requires_name' => 'Easy Digital Downloads',
|
284 |
'premium_offer' => '',
|
288 |
'name' => 'Ninja Forms: Subscribe Add-on',
|
289 |
'search' => 'Ninja Forms: Subscribe Add-on',
|
290 |
'thumbnail' => 'ninja-forms.png',
|
291 |
+
'description' => __('Quickly create newsletter signup forms for your MailPoet mailing lists using the power and flexibility that Ninja Forms provides.', WYSIJA),
|
292 |
'review' => '',
|
293 |
'plugin_url' => 'ninja-forms-mailpoet/nf-mailpoet.php',
|
294 |
'author_url' => 'http://clicky.me/ninja-forms',
|
295 |
'purchase_url' => 'http://clicky.me/ninja-forms',
|
296 |
'version' => '1.0.1',
|
297 |
+
'official' => 'no',
|
298 |
+
'on_wordpress.org' => 'no',
|
299 |
+
'free' => 'no',
|
300 |
+
'service' => 'no',
|
301 |
'requires' => 'ninja-forms/ninja-forms.php',
|
302 |
'requires_name' => 'Ninja Forms',
|
303 |
'premium_offer' => '',
|
304 |
),
|
305 |
+
|
306 |
+
/*array(
|
307 |
+
'name' => 'WangGuard: block fake signups',
|
308 |
+
'search' => 'WangGuard: block fake signups',
|
309 |
+
'thumbnail' => 'wangguard.png',
|
310 |
+
'description' => __('This plugin blocks spam signups to your site. Connect it to MailPoet with an additional add-on.'),
|
311 |
+
'review' => __('If you have this problem, then this is your solution. Totally free too.', WYSIJA),
|
312 |
+
'plugin_url' => '',
|
313 |
+
'author_url' => 'http://clicky.me/wangguard-plugin',
|
314 |
+
'purchase_url' => '',
|
315 |
+
'version' => '',
|
316 |
+
'official' => 'no',
|
317 |
+
'on_wordpress.org' => 'yes',
|
318 |
+
'free' => 'yes',
|
319 |
+
'service' => 'yes',
|
320 |
+
'premium_offer' => '',
|
321 |
+
),*/
|
322 |
);
|
323 |
|
324 |
return $available_add_ons;
|
325 |
+
}
|
326 |
+
?>
|
add-ons/add-ons.php
CHANGED
@@ -1,15 +1,13 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! defined( 'ABSPATH' ) ){
|
3 |
-
exit; // Exit if accessed directly
|
4 |
-
}
|
5 |
|
|
|
6 |
class MailPoet_Add_ons {
|
7 |
/**
|
8 |
* Constructor
|
9 |
*/
|
10 |
public function __construct(){
|
11 |
$this->plugin_path = WYSIJA_DIR;
|
12 |
-
$this->wp_plugin_path = str_replace(
|
13 |
$this->plugin_url = WYSIJA_URL;
|
14 |
$this->image_url = 'http://ps.w.org/wysija-newsletters/assets/add-ons/';
|
15 |
|
@@ -30,9 +28,9 @@ class MailPoet_Add_ons {
|
|
30 |
* administration panel and the public facing site.
|
31 |
*/
|
32 |
public function register_scripts_and_styles(){
|
33 |
-
if
|
34 |
-
wp_register_style(
|
35 |
-
wp_enqueue_style(
|
36 |
} // end if
|
37 |
} // end register_scripts_and_styles
|
38 |
|
@@ -46,34 +44,35 @@ class MailPoet_Add_ons {
|
|
46 |
|
47 |
require_once(ABSPATH.'/wp-admin/includes/plugin.php');
|
48 |
|
49 |
-
if
|
50 |
|
51 |
-
$plugin = plugin_basename(
|
52 |
-
$plugin_data = get_plugin_data(
|
53 |
|
54 |
-
$plugin_name = esc_attr(
|
55 |
-
$plugin_name = esc_attr(
|
56 |
|
57 |
-
if
|
58 |
-
if
|
59 |
-
if
|
60 |
-
$location = admin_url(
|
61 |
-
wp_safe_redirect(
|
62 |
exit;
|
63 |
}
|
64 |
-
}
|
65 |
-
|
66 |
-
|
|
|
67 |
exit;
|
68 |
}
|
69 |
}
|
70 |
|
71 |
// Activate the add-on plugin.
|
72 |
-
activate_plugin(
|
73 |
|
74 |
// Return back to add-on page.
|
75 |
-
$location = admin_url(
|
76 |
-
wp_safe_redirect(
|
77 |
exit;
|
78 |
}
|
79 |
|
@@ -81,24 +80,13 @@ class MailPoet_Add_ons {
|
|
81 |
* Display message if the plugin was not able to activate due
|
82 |
* to a required plugin is not active first.
|
83 |
*/
|
84 |
-
if
|
85 |
-
echo
|
86 |
-
'<div id="message" class="error fade" style="display:block !important;">' .
|
87 |
-
'<p>' .
|
88 |
-
'<strong>' . esc_attr( str_replace( '_', ' ', $_GET['add-on'] ) ) . '</strong> ' .
|
89 |
-
wp_kses( sprintf(
|
90 |
-
__( 'was not activated as it requires <strong><a href="%s">%s</a></strong> to be installed and active first.', WYSIJA ),
|
91 |
-
esc_url( admin_url( 'plugin-install.php?tab=search&type=term&s=' . esc_attr( strtolower( str_replace( ' ', '+', $_GET['requires'] ) ) ) ) ),
|
92 |
-
str_replace( '_', ' ', $_GET['requires'] )
|
93 |
-
), array( 'a' => array( 'href' => array() ), 'strong' => array(), 'b' => array(), 'em' => array() ) ) .
|
94 |
-
' <input type="button" class="button" value="' . esc_attr__( 'Hide this message', WYSIJA ) . '" onclick="document.location.href=\'' . esc_url( admin_url( 'admin.php?page=wysija_config#tab-add_ons' ) ) . '\';">' .
|
95 |
-
'</p>' .
|
96 |
-
'</div>';
|
97 |
}
|
98 |
|
99 |
// Display message once the add-on has been activated.
|
100 |
-
if
|
101 |
-
echo '<div id="message" class="updated fade" style="display:block !important;"><p><strong>'
|
102 |
}
|
103 |
}
|
104 |
|
@@ -110,24 +98,24 @@ class MailPoet_Add_ons {
|
|
110 |
public function mailpoet_add_on_deactivated_notice(){
|
111 |
global $current_screen;
|
112 |
|
113 |
-
require_once
|
114 |
|
115 |
-
if
|
116 |
-
$plugin = plugin_basename(
|
117 |
-
$plugin_data = get_plugin_data(
|
118 |
|
119 |
// Deactivate the add-on plugin.
|
120 |
-
deactivate_plugins(
|
121 |
|
122 |
// Return back to add-on page.
|
123 |
-
$location = admin_url(
|
124 |
-
wp_safe_redirect(
|
125 |
exit;
|
126 |
}
|
127 |
|
128 |
// Display message once the add-on has been deactivated.
|
129 |
-
if
|
130 |
-
echo '<div id="message" class="updated fade" style="display:block !important;"><p><strong>'
|
131 |
}
|
132 |
|
133 |
}
|
@@ -137,116 +125,136 @@ class MailPoet_Add_ons {
|
|
137 |
* the plugins and services available.
|
138 |
*/
|
139 |
public function add_ons_page(){
|
140 |
-
require_once
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
$status .= ' not-installed';
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
$status .= ' active';
|
159 |
-
} else {
|
160 |
-
$status .= ' inactive';
|
161 |
-
}
|
162 |
-
|
163 |
-
if ( empty( $product['requires'] ) ) {
|
164 |
-
$status .= ' ready';
|
165 |
-
} elseif ( ! empty( $product['requires'] ) && file_exists( $this->wp_plugin_path . plugin_basename( $product['requires'] ) ) ) {
|
166 |
-
$status .= ' ready';
|
167 |
-
if ( WYSIJA::is_plugin_active( $product['requires'] ) ) {
|
168 |
$status .= ' ready';
|
169 |
-
|
170 |
-
$status .= ' not-ready';
|
171 |
}
|
172 |
-
|
173 |
-
$status .= '
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
'
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
}
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
if
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
echo '<a href="' . esc_url( admin_url( 'admin.php?page=wysija_config&action=activate&module=' . $product['plugin_url'] . $requires ) ) . '" class="button-primary activate">' . esc_attr__( 'Activate', WYSIJA ) . '</a> ';
|
231 |
-
} else {
|
232 |
-
if ( ! empty( $product['config_url'] ) ) {
|
233 |
-
echo '<a href="' . esc_url( $product['config_url'] ) . '" class="mailpoet-configure-button button-secondary">' . esc_attr__( 'Configure', WYSIJA ) . '</a>';
|
234 |
-
}
|
235 |
-
}
|
236 |
}
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
}
|
|
|
250 |
} // end class
|
251 |
|
252 |
/**
|
@@ -260,4 +268,5 @@ function load_add_ons_manager(){
|
|
260 |
$mailpoet_add_ons->init_mail_poet_add_ons();
|
261 |
$mailpoet_add_ons->add_ons_page();
|
262 |
}
|
263 |
-
load_add_ons_manager();
|
|
1 |
+
<?php if(!defined('ABSPATH')) exit; // Exit if accessed directly ?>
|
|
|
|
|
|
|
2 |
|
3 |
+
<?php
|
4 |
class MailPoet_Add_ons {
|
5 |
/**
|
6 |
* Constructor
|
7 |
*/
|
8 |
public function __construct(){
|
9 |
$this->plugin_path = WYSIJA_DIR;
|
10 |
+
$this->wp_plugin_path = str_replace('wysija-newsletters', '', $this->plugin_path);
|
11 |
$this->plugin_url = WYSIJA_URL;
|
12 |
$this->image_url = 'http://ps.w.org/wysija-newsletters/assets/add-ons/';
|
13 |
|
28 |
* administration panel and the public facing site.
|
29 |
*/
|
30 |
public function register_scripts_and_styles(){
|
31 |
+
if(is_admin()){
|
32 |
+
wp_register_style('mail_poet_add_ons', WYSIJA_URL.'css/add-ons.css');
|
33 |
+
wp_enqueue_style('mail_poet_add_ons');
|
34 |
} // end if
|
35 |
} // end register_scripts_and_styles
|
36 |
|
44 |
|
45 |
require_once(ABSPATH.'/wp-admin/includes/plugin.php');
|
46 |
|
47 |
+
if(isset($_GET['action']) && $_GET['action'] == 'activate' && isset($_GET['module'])){
|
48 |
|
49 |
+
$plugin = plugin_basename($_GET['module']);
|
50 |
+
$plugin_data = get_plugin_data($this->wp_plugin_path.''.$plugin);
|
51 |
|
52 |
+
$plugin_name = esc_attr(str_replace(' ', '_', $plugin_data['Name']));
|
53 |
+
$plugin_name = esc_attr(str_replace(''', '_', $plugin_name));
|
54 |
|
55 |
+
if(isset($_GET['requires'])){
|
56 |
+
if(file_exists($this->wp_plugin_path.''.plugin_basename($_GET['requires']))){
|
57 |
+
if(!WYSIJA::is_plugin_active($_GET['requires'])){
|
58 |
+
$location = admin_url('admin.php?page=wysija_config&status=not-activated&add-on='.$plugin_name.'&requires='.esc_attr(str_replace(' ', '_', $_GET['requires_name'])).'#tab-add-ons');
|
59 |
+
wp_safe_redirect($location);
|
60 |
exit;
|
61 |
}
|
62 |
+
}
|
63 |
+
else{
|
64 |
+
$location = admin_url('admin.php?page=wysija_config&status=not-installed&add-on='.$plugin_name.'&requires='.esc_attr(str_replace(' ', '_', $_GET['requires_name'])).'#tab-add-ons');
|
65 |
+
wp_safe_redirect($location);
|
66 |
exit;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
// Activate the add-on plugin.
|
71 |
+
activate_plugin($plugin);
|
72 |
|
73 |
// Return back to add-on page.
|
74 |
+
$location = admin_url('admin.php?page=wysija_config&status=activated&add-on='.$plugin_name.'#tab-add-ons');
|
75 |
+
wp_safe_redirect($location);
|
76 |
exit;
|
77 |
}
|
78 |
|
80 |
* Display message if the plugin was not able to activate due
|
81 |
* to a required plugin is not active first.
|
82 |
*/
|
83 |
+
if($current_screen->parent_base == 'wysija_campaigns' && isset($_GET['status']) && $_GET['status'] == 'not-activated' || isset($_GET['status']) && $_GET['status'] == 'not-installed'){
|
84 |
+
echo '<div id="message" class="error fade" style="display:block !important;"><p><strong>'.str_replace('_', ' ', $_GET['add-on']).'</strong> '.sprintf(__('was not activated as it requires <strong><a href="%s">%s</a></strong> to be installed and active first.', WYSIJA), admin_url('plugin-install.php?tab=search&type=term&s='.strtolower(str_replace(' ', '+', $_GET['requires']))), str_replace('_', ' ', $_GET['requires'])).' <input type="button" class="button" value="'.__('Hide this message', WYSIJA).'" onclick="document.location.href=\''.admin_url('admin.php?page=wysija_config#tab-add_ons').'\';"></p></div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
|
87 |
// Display message once the add-on has been activated.
|
88 |
+
if($current_screen->parent_base == 'wysija_campaigns' && isset($_GET['status']) && $_GET['status'] == 'activated'){
|
89 |
+
echo '<div id="message" class="updated fade" style="display:block !important;"><p><strong>'.str_replace('_', ' ', $_GET['add-on']).'</strong> '.__('has been activated.', WYSIJA).'</p></div>';
|
90 |
}
|
91 |
}
|
92 |
|
98 |
public function mailpoet_add_on_deactivated_notice(){
|
99 |
global $current_screen;
|
100 |
|
101 |
+
require_once(ABSPATH.'/wp-admin/includes/plugin.php');
|
102 |
|
103 |
+
if(isset($_GET['action']) && $_GET['action'] == 'deactivate' && isset($_GET['module'])){
|
104 |
+
$plugin = plugin_basename($_GET['module']);
|
105 |
+
$plugin_data = get_plugin_data($this->wp_plugin_path.''.$plugin);
|
106 |
|
107 |
// Deactivate the add-on plugin.
|
108 |
+
deactivate_plugins($plugin);
|
109 |
|
110 |
// Return back to add-on page.
|
111 |
+
$location = admin_url('admin.php?page=wysija_config&status=deactivated&add-on='.esc_html(str_replace(' ', '_', $plugin_data['Name'])).'#tab-add-ons');
|
112 |
+
wp_safe_redirect($location);
|
113 |
exit;
|
114 |
}
|
115 |
|
116 |
// Display message once the add-on has been deactivated.
|
117 |
+
if($current_screen->parent_base == 'wysija_campaigns' && isset($_GET['status']) && $_GET['status'] == 'deactivated'){
|
118 |
+
echo '<div id="message" class="updated fade" style="display:block !important;"><p><strong>'.str_replace('_', ' ', $_GET['add-on']).'</strong> '.__('has been de-activated.', WYSIJA).'</p></div>';
|
119 |
}
|
120 |
|
121 |
}
|
125 |
* the plugins and services available.
|
126 |
*/
|
127 |
public function add_ons_page(){
|
128 |
+
require_once(WYSIJA_DIR.'/add-ons/add-ons-list.php');
|
129 |
+
?>
|
130 |
+
<div class="module-container">
|
131 |
+
<?php
|
132 |
+
foreach(add_ons_list() as $plugin => $product){
|
133 |
+
if(empty($product['official']) || $product['official'] == 'yes'){
|
134 |
+
|
135 |
+
$status = ''; // Status class.
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Queries if the plugin is installed,
|
139 |
+
* active and meets the requirements
|
140 |
+
* it requires if any.
|
141 |
+
*/
|
142 |
+
if(file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ $status .= ' installed'; }else{ $status .= ' not-installed'; }
|
143 |
+
if(WYSIJA::is_plugin_active($product['plugin_url'])){ $status .= ' active'; }else{ $status .= ' inactive'; }
|
144 |
+
if(empty($product['requires'])){ $status .= ' ready'; }
|
145 |
+
else if(!empty($product['requires']) && file_exists($this->wp_plugin_path.''.plugin_basename($product['requires']))){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
$status .= ' ready';
|
147 |
+
if(WYSIJA::is_plugin_active($product['requires'])){ $status .= ' ready'; }
|
148 |
+
else{ $status .= ' not-ready'; }
|
149 |
}
|
150 |
+
else if(!empty($product['requires']) && !file_exists($this->wp_plugin_path.''.plugin_basename($product['requires']))){ $status .= ' not-ready'; }
|
151 |
+
if(WYSIJA::is_plugin_active('wysija-newsletters-premium/index.php')){ $status .= ' premium-active'; }
|
152 |
+
?>
|
153 |
+
<div class="mailpoet-module<?php echo $status; ?>" id="product">
|
154 |
+
<h3><?php echo $product['name']; ?></h3>
|
155 |
+
|
156 |
+
<?php if(!empty($product['thumbnail'])){ ?><div class="mailpoet-module-image"><img src="<?php echo $this->image_url.$product['thumbnail']; ?>" width="100%" title="<?php echo $product['name']; ?>" alt=""></div><?php } ?>
|
157 |
+
|
158 |
+
<div class="mailpoet-module-content">
|
159 |
+
<div class="mailpoet-module-description">
|
160 |
+
<p><?php echo $product['description']; ?></p>
|
161 |
+
<p><?php if(!empty($product['review'])){ echo '<strong>'.sprintf(__('MailPoet says: <em>%s</em>', WYSIJA), $product['review']).'</strong>'; } ?></p>
|
162 |
+
<?php if(WYSIJA::is_plugin_active('wysija-newsletters-premium/index.php') && !empty($product['premium_offer'])){ ?><p><strong><?php echo $product['premium_offer']; ?></strong></p><?php } ?>
|
163 |
+
</div>
|
164 |
+
|
165 |
+
<div class="mailpoet-module-actions">
|
166 |
+
<?php if(!empty($product['author_url'])){ ?><a href="<?php echo esc_url($product['author_url']); ?>" target="_blank" class="button-primary website"><?php _e('Website', WYSIJA); ?></a> <?php } ?>
|
167 |
+
<?php if($product['free'] == 'yes' && !empty($product['download_url'])){ if(!file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ ?><a href="<?php echo $product['download_url']; ?>" target="_blank" class="button-primary download"><?php _e('Download Plugin', WYSIJA); ?></a> <?php } } ?>
|
168 |
+
<?php if($product['service'] == 'no'){ ?>
|
169 |
+
<?php if($product['on_wordpress.org'] == 'yes'){ if(!file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ ?><a href="<?php echo admin_url('plugin-install.php?tab=search&type=term&s='.strtolower(str_replace(' ', '+', $product['search']))); ?>" class="button-primary install"><?php _e('Install from WordPress.org', WYSIJA); ?></a> <?php } } ?>
|
170 |
+
<?php if(file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ if(!WYSIJA::is_plugin_active($product['plugin_url'])){ ?><a href="<?php if(!empty($product['requires'])){ $requires = '&requires='.$product['requires'].'&requires_name='.$product['requires_name']; }else{ $requires = ''; } echo admin_url('admin.php?page=wysija_config&action=activate&module='.$product['plugin_url'].''.$requires); ?>" class="button-primary activate"><?php _e('Activate', WYSIJA); ?></a> <?php }else{ ?>
|
171 |
+
<?php if(!empty($product['config_url'])){ ?><a href="<?php echo $product['config_url']; ?>" class="mailpoet-configure-button button-secondary"><?php _e('Configure', WYSIJA); ?></a><?php } } } ?>
|
172 |
+
<?php } ?>
|
173 |
+
</div>
|
174 |
+
</div>
|
175 |
+
</div>
|
176 |
+
<?php
|
177 |
+
} // end if local is yes.
|
178 |
+
}
|
179 |
+
?>
|
180 |
+
</div><!-- .module-container -->
|
181 |
+
|
182 |
+
<div class="submit-idea">
|
183 |
+
<p><?php echo sprintf(__('Don\'t see the add-on you\'re looking for? <a href="%s">Submit it</a> in our contact form.', WYSIJA), 'http://www.mailpoet.com/contact/" target="blank'); ?></p>
|
184 |
+
</div>
|
185 |
+
|
186 |
+
<div class="module-container">
|
187 |
+
<h2><?php _e('Works with MailPoet', WYSIJA); ?></h2>
|
188 |
+
<p><?php _e('This list of plugins and services that might be useful to you. We don\'t offer support for them, and we\'re not affiliated with them.', WYSIJA); ?></p>
|
189 |
+
|
190 |
+
<?php
|
191 |
+
foreach(add_ons_list() as $plugin => $product){
|
192 |
+
if($product['official'] == 'no'){
|
193 |
+
|
194 |
+
$status = ''; // Status class.
|
195 |
+
|
196 |
+
/**
|
197 |
+
* Queries if the plugin is installed,
|
198 |
+
* active and meets the requirements
|
199 |
+
* it requires if any.
|
200 |
+
*/
|
201 |
+
if(file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ $status .= ' installed'; }else{ $status .= ' not-installed'; }
|
202 |
+
if(WYSIJA::is_plugin_active($product['plugin_url'])){ $status .= ' active'; }else{ $status .= ' inactive'; }
|
203 |
+
if(empty($product['requires'])){ $status .= ' ready'; }
|
204 |
+
else if(!empty($product['requires']) && file_exists($this->wp_plugin_path.''.plugin_basename($product['requires']))){
|
205 |
+
$status .= ' ready';
|
206 |
+
if(WYSIJA::is_plugin_active($product['requires'])){ $status .= ' ready'; }
|
207 |
+
else{ $status .= ' not-ready'; }
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
}
|
209 |
+
else if(!empty($product['requires']) && !file_exists($this->wp_plugin_path.''.plugin_basename($product['requires']))){ $status .= ' not-ready'; }
|
210 |
+
if(WYSIJA::is_plugin_active('wysija-newsletters-premium/index.php')){ $status .= ' premium-active'; }
|
211 |
+
?>
|
212 |
+
<div class="mailpoet-module<?php echo $status; ?>" id="product">
|
213 |
+
<h3><?php echo $product['name']; ?></h3>
|
214 |
+
<?php if(!empty($product['thumbnail'])){ ?><div class="mailpoet-module-image"><img src="<?php echo $this->image_url.$product['thumbnail']; ?>" width="100%" title="<?php echo $product['name']; ?>" alt=""></div><?php } ?>
|
215 |
+
|
216 |
+
<div class="mailpoet-module-content">
|
217 |
+
<div class="mailpoet-module-description">
|
218 |
+
<p><?php echo $product['description']; ?></p>
|
219 |
+
<p><?php if(!empty($product['review'])){ echo '<strong>'.sprintf(__('MailPoet says: <em>%s</em>', WYSIJA), $product['review']).'</strong>'; } ?></p>
|
220 |
+
<?php if(WYSIJA::is_plugin_active('wysija-newsletters-premium/index.php') && !empty($product['premium_offer'])){ ?><p><strong><?php echo $product['premium_offer']; ?></strong></p><?php } ?>
|
221 |
+
</div>
|
222 |
+
|
223 |
+
<div class="mailpoet-module-actions">
|
224 |
+
<?php if(!empty($product['author_url'])){ ?><a href="<?php echo esc_url($product['author_url']); ?>" target="_blank" rel="external" class="button-primary website"><?php _e('Website', WYSIJA); ?></a> <?php } ?>
|
225 |
+
<?php
|
226 |
+
if($product['free'] == 'no' && !empty($product['purchase_url'])){
|
227 |
+
if(!empty($product['plugin_url']) && !file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ ?><a href="<?php echo $product['purchase_url']; ?>" target="_blank" rel="external" class="button-primary purchase"><?php _e('Purchase', WYSIJA); ?></a>
|
228 |
+
<?php
|
229 |
+
} // end if plugin is installed, don't show purchase button.
|
230 |
+
} // end if product is not free.
|
231 |
+
?>
|
232 |
+
|
233 |
+
<?php
|
234 |
+
if($product['service'] == 'no'){
|
235 |
+
if($product['on_wordpress.org'] == 'yes'){
|
236 |
+
if(!file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){ ?><a href="<?php echo admin_url('plugin-install.php?tab=search&type=term&s='.strtolower(str_replace(' ', '+', $product['search']))); ?>" class="button-primary install"><?php _e('Install from WordPress.org', WYSIJA); ?></a>
|
237 |
+
<?php } // end if file_exists.
|
238 |
+
} // end if $product['on_wordpress.org'];
|
239 |
+
|
240 |
+
if(!empty($product['plugin_url']) && file_exists($this->wp_plugin_path.''.plugin_basename($product['plugin_url']))){
|
241 |
+
if(!WYSIJA::is_plugin_active($product['plugin_url'])){ ?><a href="<?php if(!empty($product['requires'])){ $requires = '&requires='.$product['requires'].'&requires_name='.$product['requires_name']; }else{ $requires = ''; } echo admin_url('admin.php?page=wysija_config&action=activate&module='.$product['plugin_url'].''.$requires); ?>" class="button-primary activate"><?php _e('Activate', WYSIJA); ?></a> <?php }else{ ?>
|
242 |
+
<?php if(!empty($product['config_url'])){ ?><a href="<?php echo $product['config_url']; ?>" class="mailpoet-configure-button button-secondary"><?php _e('Configure', WYSIJA); ?></a><?php } // end if ?>
|
243 |
+
<?php
|
244 |
+
}
|
245 |
+
}
|
246 |
+
} // end if plugin is installed. ?>
|
247 |
+
</div>
|
248 |
+
</div>
|
249 |
+
</div>
|
250 |
+
<?php
|
251 |
+
} // end if local is yes.
|
252 |
+
}
|
253 |
+
?>
|
254 |
+
</div><!-- .module-container -->
|
255 |
+
<?php
|
256 |
}
|
257 |
+
|
258 |
} // end class
|
259 |
|
260 |
/**
|
268 |
$mailpoet_add_ons->init_mail_poet_add_ons();
|
269 |
$mailpoet_add_ons->add_ons_page();
|
270 |
}
|
271 |
+
load_add_ons_manager();
|
272 |
+
?>
|
classes/WJ_Export.php
CHANGED
@@ -182,8 +182,7 @@ class WJ_Export extends WYSIJA_object {
|
|
182 |
|
183 |
$rows_count = count( $data );
|
184 |
|
185 |
-
|
186 |
-
// fwrite( $this->_file_handle, "\xEF\xBB\xBF" );
|
187 |
|
188 |
// append content to the file
|
189 |
foreach ( $data as $k => $row ) {
|
182 |
|
183 |
$rows_count = count( $data );
|
184 |
|
185 |
+
fwrite( $this->_file_handle, "\xEF\xBB\xBF" );
|
|
|
186 |
|
187 |
// append content to the file
|
188 |
foreach ( $data as $k => $row ) {
|
classes/WJ_Field.php
CHANGED
@@ -7,277 +7,286 @@ can be added to a form.
|
|
7 |
Example:
|
8 |
$custom_field = new WJ_Field();
|
9 |
$custom_field->set(array(
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
));
|
21 |
$custom_field->save();
|
22 |
*/
|
23 |
|
24 |
class WJ_Field {
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
|
|
|
|
|
|
|
|
77 |
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
$order_by = $options['order_by'];
|
91 |
-
}
|
92 |
|
93 |
-
|
94 |
-
|
|
|
|
|
|
|
95 |
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
|
111 |
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
167 |
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
}
|
203 |
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
}
|
225 |
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
|
|
|
|
|
|
282 |
|
283 |
}
|
7 |
Example:
|
8 |
$custom_field = new WJ_Field();
|
9 |
$custom_field->set(array(
|
10 |
+
'name' => 'Fruits',
|
11 |
+
'type' => 'select',
|
12 |
+
'required' => false,
|
13 |
+
'settings' => array(
|
14 |
+
'label' => 'Select a fruit:',
|
15 |
+
'values' => array(
|
16 |
+
'Apple', 'Orange', 'Banana'
|
17 |
+
),
|
18 |
+
'default_value' => 'Orange'
|
19 |
+
)
|
20 |
));
|
21 |
$custom_field->save();
|
22 |
*/
|
23 |
|
24 |
class WJ_Field {
|
25 |
|
26 |
+
// The custom fields DB table.
|
27 |
+
private $table;
|
28 |
+
// The Users table.
|
29 |
+
private $user_table;
|
30 |
+
// The ID of the custom field.
|
31 |
+
public $id;
|
32 |
+
// The name of the custom field.
|
33 |
+
public $name;
|
34 |
+
// input, textarea, checkbox, radio, select
|
35 |
+
public $type;
|
36 |
+
// true | false
|
37 |
+
public $required;
|
38 |
+
// Settings.
|
39 |
+
public $settings = array();
|
40 |
|
41 |
+
/*
|
42 |
+
Just set the correct tables on creation.
|
43 |
+
$custom_field = new WJ_Field();
|
44 |
+
*/
|
45 |
+
function __construct() {
|
46 |
+
$this->table = WJ_Settings::db_prefix('custom_field');
|
47 |
+
$this->user_table = WJ_Settings::db_prefix('user');
|
48 |
+
}
|
49 |
|
50 |
+
/*
|
51 |
+
Get the table name.
|
52 |
+
Useful for statistics and counts on Custom Fields.
|
53 |
+
Generally when we want to run DB queries.
|
54 |
+
*/
|
55 |
+
public function get_table_name() {
|
56 |
+
return $this->table;
|
57 |
+
}
|
58 |
|
59 |
+
/*
|
60 |
+
Static method to get a Custom field by id.
|
61 |
+
WJ_Field::get(id);
|
62 |
+
# => WJCustomField Object
|
63 |
+
*/
|
64 |
+
public static function get($id) {
|
65 |
+
$object = new self();
|
66 |
+
global $wpdb;
|
67 |
+
$result = $wpdb->get_row($wpdb->prepare(
|
68 |
+
"SELECT * FROM $object->table
|
69 |
+
WHERE id = %d",
|
70 |
+
array($id)
|
71 |
+
), ARRAY_A);
|
72 |
+
if ($result != null) {
|
73 |
+
$result['settings'] = unserialize($result['settings']);
|
74 |
+
$result['required'] = WJ_Utils::to_bool($result['required']);
|
75 |
+
$object->set($result);
|
76 |
+
return $object;
|
77 |
+
} else {
|
78 |
+
return null;
|
79 |
+
}
|
80 |
+
}
|
81 |
|
82 |
+
/*
|
83 |
+
Get all custom fields.
|
84 |
+
WJ_Field::get_all();
|
85 |
+
# => Array of WJ_Field
|
86 |
+
*/
|
87 |
+
public static function get_all($options = array()) {
|
88 |
+
$object = new self();
|
89 |
+
global $wpdb;
|
90 |
|
91 |
+
// default order by
|
92 |
+
$order_by = 'id ASC';
|
93 |
+
if(isset($options['order_by'])) $order_by = $options['order_by'];
|
|
|
|
|
94 |
|
95 |
+
// fetch rows from db
|
96 |
+
$results = $wpdb->get_results($wpdb->prepare(
|
97 |
+
"SELECT * FROM $object->table ORDER BY $order_by",
|
98 |
+
array()
|
99 |
+
), ARRAY_A);
|
100 |
|
101 |
+
if ($results != null) {
|
102 |
+
$collection = array();
|
103 |
+
foreach ($results as $result) {
|
104 |
+
$result['settings'] = unserialize($result['settings']);
|
105 |
+
$result['required'] = WJ_Utils::to_bool($result['required']);
|
106 |
+
$field = new self();
|
107 |
+
$field->set($result);
|
108 |
+
$collection[] = $field;
|
109 |
+
}
|
110 |
+
return $collection;
|
111 |
+
} else {
|
112 |
+
return null;
|
113 |
+
}
|
114 |
+
}
|
115 |
|
116 |
|
117 |
+
/*
|
118 |
+
Get a custom fields names list.
|
119 |
+
WJ_Field::get_names_list();
|
120 |
+
# => array(1 => 'Address', 2 => 'Gender')
|
121 |
+
*/
|
122 |
+
public static function get_all_names() {
|
123 |
+
$fields = self::get_all();
|
124 |
+
$fields_list = array();
|
125 |
+
if (isset($fields)) {
|
126 |
+
foreach ($fields as $field) {
|
127 |
+
$fields_list[$field->id] = $field->name;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
return $fields_list;
|
131 |
+
}
|
132 |
|
133 |
+
/*
|
134 |
+
Set all object properties.
|
135 |
+
$custom_field->set(array(
|
136 |
+
'name' => 'First Name',
|
137 |
+
'type' => 'text',
|
138 |
+
'required' => true
|
139 |
+
));
|
140 |
+
*/
|
141 |
+
public function set($args) {
|
142 |
+
if (isset($args['id'])) {
|
143 |
+
$this->id = $args['id'];
|
144 |
+
}
|
145 |
+
$this->name = $args['name'];
|
146 |
+
$this->type = $args['type'];
|
147 |
+
$this->required = $args['required'];
|
148 |
+
$this->settings = $args['settings'];
|
149 |
+
}
|
150 |
|
151 |
+
/*
|
152 |
+
Store Custom Field in DB.
|
153 |
+
If already stored, updates it.
|
154 |
+
$custom_field->save();
|
155 |
+
*/
|
156 |
+
public function save() {
|
157 |
+
// Check if it's a new object or an update.
|
158 |
+
if (isset($this->id)) {
|
159 |
+
$this->update();
|
160 |
+
} else {
|
161 |
+
$this->create();
|
162 |
+
}
|
163 |
+
}
|
164 |
|
165 |
+
// Delete custom field from DB.
|
166 |
+
public function delete() {
|
167 |
+
global $wpdb;
|
168 |
+
$result = $wpdb->delete($this->table,
|
169 |
+
array('id' => $this->id),
|
170 |
+
array('%d')
|
171 |
+
);
|
172 |
+
$this->delete_user_col($this->id);
|
173 |
+
return $result;
|
174 |
+
}
|
175 |
|
176 |
+
/*
|
177 |
+
Generates user column name;
|
178 |
+
$custom_field->user_column_name();
|
179 |
+
# => 'cf_1'
|
180 |
+
*/
|
181 |
+
public function user_column_name() {
|
182 |
+
$column_name = 'cf_' . $this->id;
|
183 |
+
return $column_name;
|
184 |
+
}
|
185 |
|
186 |
+
/*
|
187 |
+
Creates the Custom Field.
|
188 |
+
It also creates the user column, depending on type.
|
189 |
+
*/
|
190 |
+
private function create() {
|
191 |
+
global $wpdb;
|
192 |
+
$required = WJ_Utils::to_int($this->required);
|
193 |
+
$wpdb->insert(
|
194 |
+
$this->table,
|
195 |
+
array(
|
196 |
+
'name' => $this->name,
|
197 |
+
'type' => $this->type,
|
198 |
+
'required' => $required,
|
199 |
+
'settings' => serialize($this->settings)
|
200 |
+
), array('%s', '%s', '%d', '%s', '%s')
|
201 |
+
);
|
202 |
+
// ! No id in user col?
|
203 |
+
if ($wpdb->insert_id) {
|
204 |
+
$this->id = $wpdb->insert_id;
|
205 |
+
$this->create_user_col();
|
206 |
+
} else {
|
207 |
+
return false;
|
208 |
+
}
|
209 |
+
}
|
|
|
210 |
|
211 |
+
/*
|
212 |
+
Updates the value of the custom field.
|
213 |
+
$custom_field->update('New address');
|
214 |
+
*/
|
215 |
+
private function update() {
|
216 |
+
global $wpdb;
|
217 |
+
$required = WJ_Utils::to_int($this->required);
|
218 |
+
$result = $wpdb->update(
|
219 |
+
$this->table,
|
220 |
+
array(
|
221 |
+
'name' => $this->name,
|
222 |
+
'type' => $this->type,
|
223 |
+
'required' => $required,
|
224 |
+
'settings' => serialize($this->settings)
|
225 |
+
), array("id" => $this->id),
|
226 |
+
array('%s', '%s', '%d'),
|
227 |
+
array("%d")
|
228 |
+
);
|
229 |
+
return $result;
|
230 |
+
}
|
|
|
231 |
|
232 |
+
/*
|
233 |
+
Creates the correct user columnn, named cf_x, in the
|
234 |
+
user table. x is the ID if the custom field.
|
235 |
+
*/
|
236 |
+
private function create_user_col() {
|
237 |
+
global $wpdb;
|
238 |
+
$column_name = $this->user_column_name();
|
239 |
+
$column_type = $this->generate_column_type();
|
240 |
+
$result = $wpdb->query(
|
241 |
+
"ALTER TABLE $this->user_table ADD COLUMN $column_name $column_type"
|
242 |
+
);
|
243 |
+
return $result;
|
244 |
+
}
|
245 |
|
246 |
+
/*
|
247 |
+
Calculates the correct column type, based on custom field type.
|
248 |
+
$custom_field->generate_column_type();
|
249 |
+
# => 'VARCHAR(100)'
|
250 |
+
*/
|
251 |
+
private function generate_column_type() {
|
252 |
+
switch ($this->type) {
|
253 |
+
case 'input':
|
254 |
+
$column_type = 'VARCHAR(100)';
|
255 |
+
break;
|
256 |
+
case 'textarea':
|
257 |
+
$column_type = 'VARCHAR(255)';
|
258 |
+
break;
|
259 |
+
case 'checkbox':
|
260 |
+
$column_type = 'TINYINT(1)';
|
261 |
+
break;
|
262 |
+
case 'radio':
|
263 |
+
$column_type = 'VARCHAR(255)';
|
264 |
+
break;
|
265 |
+
case 'select':
|
266 |
+
$column_type = 'VARCHAR(255)';
|
267 |
+
break;
|
268 |
+
case 'date':
|
269 |
+
$column_type = 'INT(10) UNSIGNED';
|
270 |
+
break;
|
271 |
+
default:
|
272 |
+
$column_type = 'VARCHAR(255)';
|
273 |
+
break;
|
274 |
+
}
|
275 |
+
return $column_type;
|
276 |
+
}
|
277 |
|
278 |
+
/*
|
279 |
+
Deletes the user column in the user table.
|
280 |
+
Needed when we remove a custom field.
|
281 |
+
*/
|
282 |
+
private function delete_user_col($custom_field_id) {
|
283 |
+
global $wpdb;
|
284 |
+
$cf_column = 'cf_' . $custom_field_id;
|
285 |
+
$result = $wpdb->query(
|
286 |
+
"ALTER TABLE $this->user_table
|
287 |
+
DROP COLUMN $cf_column"
|
288 |
+
);
|
289 |
+
return $result;
|
290 |
+
}
|
291 |
|
292 |
}
|
classes/WJ_Import.php
CHANGED
@@ -16,7 +16,6 @@ class WJ_Import extends WYSIJA_object {
|
|
16 |
private $_data_to_insert = array();
|
17 |
private $_number_list = 0;
|
18 |
private $_data_numbers = array();
|
19 |
-
private $_line_delimiter = "\n";
|
20 |
private $_duplicate_emails_count = array(); // detect the emails that are duplicates in the import file
|
21 |
private $_csv_array = array(); // containing the csv into an array
|
22 |
private $_ignored_row_count = 0; // the count of rows we ignore because there was no valid email present
|
@@ -120,10 +119,7 @@ class WJ_Import extends WYSIJA_object {
|
|
120 |
'type' => $maybe_newfield[1],
|
121 |
'required' => false,
|
122 |
'settings' => array(
|
123 |
-
'label' => $maybe_newfield[2]
|
124 |
-
'date_type' => 'year_month_day',
|
125 |
-
'is_default_today' => 0,
|
126 |
-
'date_order' => 'mm/dd/yyyy'
|
127 |
)
|
128 |
));
|
129 |
|
@@ -313,7 +309,7 @@ class WJ_Import extends WYSIJA_object {
|
|
313 |
$data = array();
|
314 |
|
315 |
// the new way for splitting a string into an array of lines
|
316 |
-
$csv_data_array =
|
317 |
|
318 |
$i=1;
|
319 |
foreach($csv_data_array as $csv_line){
|
@@ -664,21 +660,21 @@ class WJ_Import extends WYSIJA_object {
|
|
664 |
*/
|
665 |
private function _run_test_on_csv_file(){
|
666 |
// try different set of enclosure and separator for the csv which can have different look depending on the data carried
|
667 |
-
$field_separators_to_test = array(
|
668 |
-
$field_enclosers_to_test = array(
|
669 |
$this->_csv_data['fsep'] = false;
|
670 |
$this->_csv_data['fenc'] = '';
|
671 |
$helper_user = WYSIJA::get('user','helper');
|
672 |
-
|
673 |
foreach($field_enclosers_to_test as $enclosure){
|
674 |
foreach($field_separators_to_test as $fsep){
|
675 |
|
676 |
// testing different combinations of separator and enclosers
|
677 |
-
$this->_csv_array = $this->_csv_to_array(
|
678 |
|
679 |
// make sure that our CSV has more than one row and that it has the same number of values in the first row and the second row
|
680 |
-
if
|
681 |
-
|
|
|
682 |
$this->_csv_data['fsep'] = $fsep;
|
683 |
$this->_csv_data['fenc'] = $enclosure;
|
684 |
break(2);
|
@@ -687,6 +683,7 @@ class WJ_Import extends WYSIJA_object {
|
|
687 |
}
|
688 |
}
|
689 |
|
|
|
690 |
// if we didn't manage to find a separator in that file then it is not a csv file and we come out
|
691 |
if(empty($this->_csv_data['fsep'])){
|
692 |
$this->notice( sprintf(
|
16 |
private $_data_to_insert = array();
|
17 |
private $_number_list = 0;
|
18 |
private $_data_numbers = array();
|
|
|
19 |
private $_duplicate_emails_count = array(); // detect the emails that are duplicates in the import file
|
20 |
private $_csv_array = array(); // containing the csv into an array
|
21 |
private $_ignored_row_count = 0; // the count of rows we ignore because there was no valid email present
|
119 |
'type' => $maybe_newfield[1],
|
120 |
'required' => false,
|
121 |
'settings' => array(
|
122 |
+
'label' => $maybe_newfield[2]
|
|
|
|
|
|
|
123 |
)
|
124 |
));
|
125 |
|
309 |
$data = array();
|
310 |
|
311 |
// the new way for splitting a string into an array of lines
|
312 |
+
$csv_data_array = preg_split ('/$\R?^/m', $csv_file_content);
|
313 |
|
314 |
$i=1;
|
315 |
foreach($csv_data_array as $csv_line){
|
660 |
*/
|
661 |
private function _run_test_on_csv_file(){
|
662 |
// try different set of enclosure and separator for the csv which can have different look depending on the data carried
|
663 |
+
$field_separators_to_test = array(',',';',"\t");
|
664 |
+
$field_enclosers_to_test = array('"','');
|
665 |
$this->_csv_data['fsep'] = false;
|
666 |
$this->_csv_data['fenc'] = '';
|
667 |
$helper_user = WYSIJA::get('user','helper');
|
|
|
668 |
foreach($field_enclosers_to_test as $enclosure){
|
669 |
foreach($field_separators_to_test as $fsep){
|
670 |
|
671 |
// testing different combinations of separator and enclosers
|
672 |
+
$this->_csv_array = $this->_csv_to_array($this->_csv_file_string , 10 , $fsep , $enclosure);
|
673 |
|
674 |
// make sure that our CSV has more than one row and that it has the same number of values in the first row and the second row
|
675 |
+
if((count($this->_csv_array) > 1 && count($this->_csv_array[0]) == count($this->_csv_array[1]))){
|
676 |
+
|
677 |
+
if(count($this->_csv_array[0]) > 1 || $helper_user->validEmail(trim($this->_csv_array[0][0])) || $helper_user->validEmail(trim($this->_csv_array[1][0]))){
|
678 |
$this->_csv_data['fsep'] = $fsep;
|
679 |
$this->_csv_data['fenc'] = $enclosure;
|
680 |
break(2);
|
683 |
}
|
684 |
}
|
685 |
|
686 |
+
|
687 |
// if we didn't manage to find a separator in that file then it is not a csv file and we come out
|
688 |
if(empty($this->_csv_data['fsep'])){
|
689 |
$this->notice( sprintf(
|
classes/WJ_Stats.php
CHANGED
@@ -121,7 +121,7 @@ class WJ_Stats extends WYSIJA_object {
|
|
121 |
$this->decoded_url = str_replace('&', '&', $this->decoded_url);
|
122 |
if ($this->is_browser_link($this->decoded_url)) {
|
123 |
$this->decoded_url = $this->attach_user($this->decoded_url);
|
124 |
-
}
|
125 |
return $this->decoded_url;
|
126 |
}
|
127 |
|
@@ -132,7 +132,7 @@ class WJ_Stats extends WYSIJA_object {
|
|
132 |
* @return string
|
133 |
*/
|
134 |
protected function attach_user($url) {
|
135 |
-
if (!empty($this->_user) && !empty($this->_user['user_id'])) {
|
136 |
$url_components = parse_url($url);
|
137 |
$arr_params = array();
|
138 |
if (!empty($url_components['query']))
|
@@ -140,7 +140,7 @@ class WJ_Stats extends WYSIJA_object {
|
|
140 |
if (empty($arr_params['user_id'])) {
|
141 |
$url .= ((strpos($url, '?') !== false) ? '&' : '?');
|
142 |
$url .= 'user_id='.$this->_user['user_id'];
|
143 |
-
}
|
144 |
}
|
145 |
return $url;
|
146 |
}
|
@@ -341,11 +341,11 @@ class WJ_Stats extends WYSIJA_object {
|
|
341 |
$config = WYSIJA::get('config', 'model');
|
342 |
return WYSIJA::get_permalink($config->getValue('confirm_email_link'), $params_url);
|
343 |
}
|
344 |
-
|
345 |
/**
|
346 |
* Detect if the current link is a browser link
|
347 |
* @param string $url
|
348 |
-
* @return boolean
|
349 |
*/
|
350 |
protected function is_browser_link($url) {
|
351 |
$flag = false;
|
@@ -361,7 +361,7 @@ class WJ_Stats extends WYSIJA_object {
|
|
361 |
$flag = true;
|
362 |
}
|
363 |
}
|
364 |
-
}
|
365 |
return $flag;
|
366 |
}
|
367 |
|
121 |
$this->decoded_url = str_replace('&', '&', $this->decoded_url);
|
122 |
if ($this->is_browser_link($this->decoded_url)) {
|
123 |
$this->decoded_url = $this->attach_user($this->decoded_url);
|
124 |
+
}
|
125 |
return $this->decoded_url;
|
126 |
}
|
127 |
|
132 |
* @return string
|
133 |
*/
|
134 |
protected function attach_user($url) {
|
135 |
+
if (!empty($this->_user) && !empty($this->_user['user_id'])) {
|
136 |
$url_components = parse_url($url);
|
137 |
$arr_params = array();
|
138 |
if (!empty($url_components['query']))
|
140 |
if (empty($arr_params['user_id'])) {
|
141 |
$url .= ((strpos($url, '?') !== false) ? '&' : '?');
|
142 |
$url .= 'user_id='.$this->_user['user_id'];
|
143 |
+
}
|
144 |
}
|
145 |
return $url;
|
146 |
}
|
341 |
$config = WYSIJA::get('config', 'model');
|
342 |
return WYSIJA::get_permalink($config->getValue('confirm_email_link'), $params_url);
|
343 |
}
|
344 |
+
|
345 |
/**
|
346 |
* Detect if the current link is a browser link
|
347 |
* @param string $url
|
348 |
+
* @return boolean
|
349 |
*/
|
350 |
protected function is_browser_link($url) {
|
351 |
$flag = false;
|
361 |
$flag = true;
|
362 |
}
|
363 |
}
|
364 |
+
}
|
365 |
return $flag;
|
366 |
}
|
367 |
|
classes/WJ_Upgrade.php
CHANGED
@@ -32,21 +32,8 @@ class WJ_Upgrade extends WYSIJA_object {
|
|
32 |
}
|
33 |
|
34 |
public function update_warning() {
|
35 |
-
if ( !
|
36 |
return;
|
37 |
-
}
|
38 |
-
|
39 |
-
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
40 |
-
return;
|
41 |
-
}
|
42 |
-
|
43 |
-
if ( ! ( ( is_multisite() && current_user_can( 'manage_network' ) ) || current_user_can( 'update_plugins' ) ) ){
|
44 |
-
return;
|
45 |
-
}
|
46 |
-
|
47 |
-
if ( ! function_exists( 'get_plugin_data' ) ){
|
48 |
-
include_once ABSPATH . 'wp-admin/includes/plugin.php';
|
49 |
-
}
|
50 |
|
51 |
$current = get_site_transient( 'update_plugins' );
|
52 |
|
@@ -242,17 +229,11 @@ class WJ_Upgrade extends WYSIJA_object {
|
|
242 |
|
243 |
public function pre_set_site_transient_update_plugins( $update_data ){
|
244 |
|
245 |
-
if ( ! function_exists( 'get_plugin_data' ) )
|
246 |
-
return (object) array();
|
247 |
-
}
|
248 |
-
|
249 |
-
if ( ! is_object( $update_data ) && strlen( trim( $update_data ) ) === 0 ){
|
250 |
return (object) array();
|
251 |
-
}
|
252 |
|
253 |
-
if ( ! isset( $update_data->last_checked ) )
|
254 |
$update_data->last_checked = 0;
|
255 |
-
}
|
256 |
|
257 |
if ( ( time() - ( 60 * 60 * 12 ) ) > ( $update_data->last_checked ) ) { // Just check once every 12 hours
|
258 |
return $update_data;
|
@@ -310,43 +291,20 @@ class WJ_Upgrade extends WYSIJA_object {
|
|
310 |
global $title, $parent_file, $submenu_file;
|
311 |
|
312 |
if ( strtoupper( $_SERVER['REQUEST_METHOD'] ) === 'POST' && in_array( $current_screen->id, array( 'update-core', 'plugins' ) ) ) {
|
313 |
-
if ( !isset( $_POST['checked'] ) ){
|
314 |
-
return;
|
315 |
-
}
|
316 |
-
|
317 |
$plugins = (array) $_POST['checked'];
|
318 |
$plugins = array_map( 'urldecode', $plugins );
|
319 |
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
switch ( $_POST['action'] ){
|
326 |
-
case 'delete-selected':
|
327 |
-
break;
|
328 |
-
|
329 |
-
case 'deactivate-selected':
|
330 |
-
if ( in_array( self::$plugins[0], $plugins ) && ! in_array( self::$plugins[1], $plugins ) && is_plugin_active( self::$plugins[1] ) ){
|
331 |
-
$plugins[] = self::$plugins[1];
|
332 |
-
}
|
333 |
-
break;
|
334 |
-
|
335 |
-
case 'update-selected':
|
336 |
-
case 'activate-selected':
|
337 |
-
if ( in_array( self::$plugins[1], $plugins ) && ! in_array( self::$plugins[0], $plugins ) ){
|
338 |
-
$plugins[] = self::$plugins[0];
|
339 |
-
}
|
340 |
-
|
341 |
-
break;
|
342 |
}
|
343 |
-
|
344 |
-
$_POST['checked'] = $plugins;
|
345 |
|
346 |
return;
|
347 |
}
|
348 |
|
349 |
-
|
350 |
if ( $current_screen->id !== 'update' ){
|
351 |
return;
|
352 |
}
|
32 |
}
|
33 |
|
34 |
public function update_warning() {
|
35 |
+
if ( ! ( ( is_multisite() && current_user_can( 'manage_network' ) ) || current_user_can( 'update_plugins' ) ) )
|
36 |
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
$current = get_site_transient( 'update_plugins' );
|
39 |
|
229 |
|
230 |
public function pre_set_site_transient_update_plugins( $update_data ){
|
231 |
|
232 |
+
if ( ! function_exists( 'get_plugin_data' ) )
|
|
|
|
|
|
|
|
|
233 |
return (object) array();
|
|
|
234 |
|
235 |
+
if ( ! isset( $update_data->last_checked ) )
|
236 |
$update_data->last_checked = 0;
|
|
|
237 |
|
238 |
if ( ( time() - ( 60 * 60 * 12 ) ) > ( $update_data->last_checked ) ) { // Just check once every 12 hours
|
239 |
return $update_data;
|
291 |
global $title, $parent_file, $submenu_file;
|
292 |
|
293 |
if ( strtoupper( $_SERVER['REQUEST_METHOD'] ) === 'POST' && in_array( $current_screen->id, array( 'update-core', 'plugins' ) ) ) {
|
|
|
|
|
|
|
|
|
294 |
$plugins = (array) $_POST['checked'];
|
295 |
$plugins = array_map( 'urldecode', $plugins );
|
296 |
|
297 |
+
foreach ( $plugins as $plugin ) {
|
298 |
+
if ( in_array( $plugin, self::$plugins ) ) {
|
299 |
+
unset(self::$plugins[array_search( $plugin, self::$plugins )]);
|
300 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
}
|
302 |
+
$plugins = array_merge( $plugins, self::$plugins );
|
303 |
+
$_POST['checked'] = array_map( 'urlencode', $plugins );
|
304 |
|
305 |
return;
|
306 |
}
|
307 |
|
|
|
308 |
if ( $current_screen->id !== 'update' ){
|
309 |
return;
|
310 |
}
|
controllers/ajax/campaigns.php
CHANGED
@@ -2,1003 +2,956 @@
|
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_control_back_campaigns extends WYSIJA_control{
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
$icons = $bookmarksHelper->getAllByIconset($size, $iconset);
|
764 |
-
}
|
765 |
-
|
766 |
-
|
767 |
-
// format data
|
768 |
-
$block = array(
|
769 |
-
'position' => 1,
|
770 |
-
'type' => 'gallery',
|
771 |
-
'items' => array(),
|
772 |
-
'alignment' => 'center'
|
773 |
-
);
|
774 |
-
|
775 |
-
$width = 0;
|
776 |
-
foreach($items as $key => $item) {
|
777 |
-
$block['items'][] = array_merge($item, $icons[$key], array('alt' => ucfirst($key)));
|
778 |
-
$width += (int)$icons[$key]['width'];
|
779 |
-
}
|
780 |
-
// add margin between icons
|
781 |
-
$width += (count($block['items']) - 1) * 10;
|
782 |
-
// set optimal width
|
783 |
-
$block['width'] = max(0, min($width, 564));
|
784 |
-
|
785 |
-
$helper_wj_engine=WYSIJA::get('wj_engine','helper');
|
786 |
-
return base64_encode($helper_wj_engine->renderEditorBlock($block));
|
787 |
-
}
|
788 |
-
|
789 |
-
function install_theme() {
|
790 |
-
if( isset($_REQUEST['theme_id'])){
|
791 |
-
global $wp_version;
|
792 |
-
//check if theme is premium if you have the premium licence
|
793 |
-
if(isset($_REQUEST['premium']) && $_REQUEST['premium']){
|
794 |
-
$getpremiumtheme=apply_filters('wysija_install_theme_premium', false);
|
795 |
-
|
796 |
-
if(!$getpremiumtheme){
|
797 |
-
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
798 |
-
$themes = $helper_wj_engine->renderThemes();
|
799 |
-
return array('result'=>false, 'themes' => $themes);
|
800 |
-
}
|
801 |
-
}
|
802 |
-
|
803 |
-
$helperToolbox = WYSIJA::get('toolbox','helper');
|
804 |
-
$domain_name = $helperToolbox->_make_domain_name(admin_url('admin.php'));
|
805 |
-
|
806 |
-
$request = 'http://api.mailpoet.com/download/zip/'.$_REQUEST['theme_id'].'?domain='.$domain_name;
|
807 |
-
|
808 |
-
$args = array(
|
809 |
-
'timeout' => 30,
|
810 |
-
'body' => array( ),
|
811 |
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
|
|
1004 |
}
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_control_back_campaigns extends WYSIJA_control{
|
4 |
|
5 |
+
function WYSIJA_control_back_campaigns(){
|
6 |
+
if(!WYSIJA::current_user_can('wysija_newsletters')) die('Action is forbidden.');
|
7 |
+
parent::WYSIJA_control();
|
8 |
+
}
|
9 |
+
|
10 |
+
function save_poll(){
|
11 |
+
$model_config = WYSIJA::get('config','model');
|
12 |
+
$model_config->save(array('poll_origin' => $_REQUEST['how'] , 'poll_origin_url' => $_REQUEST['where']));
|
13 |
+
|
14 |
+
$res['result'] = true;
|
15 |
+
$res['msg'] = '<span><span class="checkmark">---</span>'. __('Thanks!',WYSIJA). '</span>';
|
16 |
+
return $res;
|
17 |
+
}
|
18 |
+
|
19 |
+
function switch_theme() {
|
20 |
+
if(isset($_POST['wysijaData'])) {
|
21 |
+
$rawData = $_POST['wysijaData'];
|
22 |
+
// avoid using stripslashes as it's not reliable depending on the magic quotes settings
|
23 |
+
$rawData = str_replace('\"', '"', $rawData);
|
24 |
+
// decode JSON data
|
25 |
+
$rawData = json_decode($rawData, true);
|
26 |
+
|
27 |
+
$theme = (isset($rawData['theme'])) ? $rawData['theme'] : 'default';
|
28 |
+
|
29 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
30 |
+
$res['templates'] = $helper_wj_engine->renderTheme($theme);
|
31 |
+
|
32 |
+
$email_id = (int)$_REQUEST['id'];
|
33 |
+
|
34 |
+
$campaignsHelper = WYSIJA::get('campaigns', 'helper');
|
35 |
+
|
36 |
+
if(isset($res['templates']['divider_options'])) {
|
37 |
+
// save divider
|
38 |
+
$campaignsHelper->saveParameters($email_id, 'divider', $res['templates']['divider_options']);
|
39 |
+
}
|
40 |
+
|
41 |
+
// save theme used
|
42 |
+
$campaignsHelper->saveParameters($email_id, 'theme', $theme);
|
43 |
+
|
44 |
+
$res['templates']['theme'] = $theme;
|
45 |
+
$res['styles'] = $helper_wj_engine->renderThemeStyles($theme);
|
46 |
+
} else {
|
47 |
+
$res['msg'] = __("The theme you selected could not be loaded.",WYSIJA);
|
48 |
+
$res['result'] = false;
|
49 |
+
}
|
50 |
+
return $res;
|
51 |
+
}
|
52 |
+
|
53 |
+
function save_editor() {
|
54 |
+
// decode json data and convert to array
|
55 |
+
$rawData = '';
|
56 |
+
if(isset($_POST['wysijaData'])) {
|
57 |
+
$rawData = $_POST['wysijaData'];
|
58 |
+
// avoid using stripslashes as it's not reliable depending on the magic quotes settings
|
59 |
+
$rawData = str_replace('\"', '"', $rawData);
|
60 |
+
// decode JSON data
|
61 |
+
$rawData = json_decode($rawData, true);
|
62 |
+
}
|
63 |
+
|
64 |
+
if(!$rawData){
|
65 |
+
$this->error('Error saving',false);
|
66 |
+
return array('result' => false);
|
67 |
+
}
|
68 |
+
|
69 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
70 |
+
$helper_wj_engine->setData($rawData);
|
71 |
+
$result = false;
|
72 |
+
|
73 |
+
// get email id
|
74 |
+
$email_id = (int)$_REQUEST['id'];
|
75 |
+
|
76 |
+
$model_email = WYSIJA::get('email', 'model');
|
77 |
+
$emailData = $model_email->getOne(array('wj_styles', 'subject', 'params', 'email_id', 'campaign_id'), array('email_id' => $email_id));
|
78 |
+
|
79 |
+
$helper_wj_engine->setStyles($emailData['wj_styles'], true);
|
80 |
+
|
81 |
+
$values = array('wj_data' => $helper_wj_engine->getEncoded('data'));
|
82 |
+
$values['body'] = $helper_wj_engine->renderEmail($emailData);
|
83 |
+
$values['email_id'] = $email_id;
|
84 |
+
|
85 |
+
$updated_email = $helper_wj_engine->getEmailData();
|
86 |
+
// check if we are dealing with an auto newsletter
|
87 |
+
if(isset($updated_email['params']['autonl']) && !empty($updated_email['params']['autonl'])) {
|
88 |
+
// update include/exclude category ids in autonl params so as to process post notifications
|
89 |
+
$values['params']['autonl']['include_category_ids'] = (array_key_exists('include_category_ids', $updated_email['params']['autonl']) ? $updated_email['params']['autonl']['include_category_ids'] : array());
|
90 |
+
$values['params']['autonl']['exclude_category_ids'] = (array_key_exists('exclude_category_ids', $updated_email['params']['autonl']) ? $updated_email['params']['autonl']['exclude_category_ids'] : array());
|
91 |
+
}
|
92 |
+
|
93 |
+
// wtf is that? could it explain the Sent On being updated for no reason?
|
94 |
+
$model_email->columns['modified_at']['autoup']=1;
|
95 |
+
|
96 |
+
// update data in DB
|
97 |
+
$result = $model_email->update($values, array('email_id' => $email_id));
|
98 |
+
|
99 |
+
if(!$result) {
|
100 |
+
// throw error
|
101 |
+
$this->error(__('Your email could not be saved', WYSIJA));
|
102 |
+
} else {
|
103 |
+
// save successful
|
104 |
+
$this->notice(__('Your email has been saved', WYSIJA));
|
105 |
+
}
|
106 |
+
|
107 |
+
return array('result' => $result);
|
108 |
+
}
|
109 |
+
|
110 |
+
function save_styles() {
|
111 |
+
// decode json data and convert to array
|
112 |
+
$rawData = '';
|
113 |
+
if(isset($_POST['wysijaStyles'])) {
|
114 |
+
$rawData = $_POST['wysijaStyles'];
|
115 |
+
// avoid using stripslashes as it's not reliable depending on the magic quotes settings
|
116 |
+
$rawData = str_replace('\"', '"', $rawData);
|
117 |
+
// decode JSON data
|
118 |
+
$rawData = json_decode($rawData, true);
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
// handle checkboxes
|
123 |
+
if(array_key_exists('a-underline', $rawData) === false) {
|
124 |
+
$rawData['a-underline'] = -1;
|
125 |
+
}
|
126 |
+
|
127 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
128 |
+
$helper_wj_engine->setStyles($helper_wj_engine->formatStyles($rawData));
|
129 |
+
|
130 |
+
$result = false;
|
131 |
+
|
132 |
+
$values = array(
|
133 |
+
'wj_styles' => $helper_wj_engine->getEncoded('styles')
|
134 |
+
);
|
135 |
+
|
136 |
+
// get email id
|
137 |
+
$email_id = (int)$_REQUEST['id'];
|
138 |
+
|
139 |
+
// update data in DB
|
140 |
+
$model_email = WYSIJA::get('email', 'model');
|
141 |
+
$result = $model_email->update($values, array('email_id' => $email_id));
|
142 |
+
|
143 |
+
if(!$result) {
|
144 |
+
// throw error
|
145 |
+
$this->error(__('Styles could not be saved', WYSIJA));
|
146 |
+
} else {
|
147 |
+
// save successful
|
148 |
+
$this->notice(__('Styles have been saved', WYSIJA));
|
149 |
+
}
|
150 |
+
|
151 |
+
return array(
|
152 |
+
'styles' => $helper_wj_engine->renderStyles(),
|
153 |
+
'result' => $result
|
154 |
+
);
|
155 |
+
}
|
156 |
+
|
157 |
+
function deleteimg(){
|
158 |
+
|
159 |
+
if(isset($_REQUEST['imgid']) && $_REQUEST['imgid']>0){
|
160 |
+
/* delete the image with id imgid */
|
161 |
+
$result=wp_delete_attachment($_REQUEST['imgid'],true);
|
162 |
+
if($result){
|
163 |
+
$this->notice(__('Image has been deleted.',WYSIJA));
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
$res=array();
|
168 |
+
$res['result'] = $result;
|
169 |
+
return $res;
|
170 |
+
}
|
171 |
+
|
172 |
+
function deleteTheme(){
|
173 |
+
if(isset($_REQUEST['themekey']) && $_REQUEST['themekey']){
|
174 |
+
/* delete the image with id imgid */
|
175 |
+
$helperTheme=WYSIJA::get('themes','helper');
|
176 |
+
$result=$helperTheme->delete($_REQUEST['themekey']);
|
177 |
+
}
|
178 |
+
|
179 |
+
$res=array();
|
180 |
+
$res['result'] = $result;
|
181 |
+
return $res;
|
182 |
+
}
|
183 |
+
|
184 |
+
// set newsletter default theme
|
185 |
+
function setDefaultTheme() {
|
186 |
+
if(isset($_REQUEST['theme']) && $_REQUEST['theme']) {
|
187 |
+
// check that the theme exists
|
188 |
+
// TODO
|
189 |
+
$theme_exists = true;
|
190 |
+
if($theme_exists === true) {
|
191 |
+
// update config
|
192 |
+
$model_config = WYSIJA::get('config', 'model');
|
193 |
+
$model_config->save(array('newsletter_default_theme' => $_REQUEST['theme']));
|
194 |
+
|
195 |
+
$result = true;
|
196 |
+
} else {
|
197 |
+
$result = false;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
return array('result' => $result);
|
202 |
+
}
|
203 |
+
|
204 |
+
function save_IQS() {
|
205 |
+
// decode json data and convert to array
|
206 |
+
$wysijaIMG = '';
|
207 |
+
if(isset($_POST['wysijaIMG'])) {
|
208 |
+
$wysijaIMG = json_decode(stripslashes($_POST['wysijaIMG']), TRUE);
|
209 |
+
}
|
210 |
+
$values = array(
|
211 |
+
'params' => array('quickselection'=>$wysijaIMG)
|
212 |
+
);
|
213 |
+
|
214 |
+
// get email id
|
215 |
+
$email_id = (int)$_REQUEST['id'];
|
216 |
+
$values['email_id']=$email_id;
|
217 |
+
|
218 |
+
// update data in DB
|
219 |
+
$model_email = WYSIJA::get('email', 'model');
|
220 |
+
$result = $model_email->update($values, array('email_id' => $email_id));
|
221 |
+
|
222 |
+
if(!$result) {
|
223 |
+
// throw error
|
224 |
+
$this->error(__('Image selection has not been saved.', WYSIJA));
|
225 |
+
} else {
|
226 |
+
// save successful
|
227 |
+
$this->notice(__('Image selection has been saved.', WYSIJA));
|
228 |
+
}
|
229 |
+
|
230 |
+
return array('result' => $result);
|
231 |
+
}
|
232 |
+
|
233 |
+
|
234 |
+
function view_NL() {
|
235 |
+
// get campaign id
|
236 |
+
$email_id = (int)$_REQUEST['id'];
|
237 |
+
|
238 |
+
// update data in DB
|
239 |
+
$model_email = WYSIJA::get('email', 'model');
|
240 |
+
$result = $model_email->getOne(false,array('email_id' => $email_id));
|
241 |
+
|
242 |
+
echo $result['body'];
|
243 |
+
exit;
|
244 |
+
}
|
245 |
+
|
246 |
+
function display_NL() {
|
247 |
+
// get email id
|
248 |
+
$email_id = (int)$_REQUEST['id'];
|
249 |
+
|
250 |
+
// update data in DB
|
251 |
+
$model_email = WYSIJA::get('email', 'model');
|
252 |
+
$email= $model_email->getOne(false,array('email_id' => $email_id));
|
253 |
+
|
254 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
255 |
+
$helper_wj_engine->setStyles($result['wj_styles'], true);
|
256 |
+
$helper_wj_engine->setData($result['wj_data'], true);
|
257 |
+
$html = $helper_wj_engine->renderEmail($email);
|
258 |
+
print $html;
|
259 |
+
exit;
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* returns the images attached to displayed posts
|
264 |
+
*/
|
265 |
+
function get_post_images() {
|
266 |
+
// get parameters
|
267 |
+
$params = array(
|
268 |
+
|
269 |
+
);
|
270 |
+
|
271 |
+
$result = true;
|
272 |
+
|
273 |
+
if($params['post_id'] === null) {
|
274 |
+
|
275 |
+
}
|
276 |
+
|
277 |
+
return array(
|
278 |
+
'result' => $result,
|
279 |
+
'images' => $images
|
280 |
+
);
|
281 |
+
}
|
282 |
+
|
283 |
+
/**
|
284 |
+
* returns a list of articles to the popup in the visual editor
|
285 |
+
* @global type $wpdb
|
286 |
+
* @return boolean
|
287 |
+
*/
|
288 |
+
function get_articles(){
|
289 |
+
// fixes issue with pcre functions
|
290 |
+
@ini_set('pcre.backtrack_limit', 1000000);
|
291 |
+
|
292 |
+
// get parameters
|
293 |
+
$raw_data = $_REQUEST['data'];
|
294 |
+
$params = array();
|
295 |
+
foreach ($raw_data as $value) {
|
296 |
+
$params[$value['name']] = $value['value'];
|
297 |
+
}
|
298 |
+
|
299 |
+
// get options
|
300 |
+
$model_config = WYSIJA::get('config', 'model');
|
301 |
+
$interpret_shortcode = (bool)$model_config->getValue('interp_shortcode');
|
302 |
+
|
303 |
+
// specify custom fields to get from posts
|
304 |
+
$params['post_fields'] = array('post_title', 'post_content', 'post_excerpt', 'post_author', 'post_type', 'post_status');
|
305 |
+
|
306 |
+
// post statuses
|
307 |
+
$helper_wp_tools = WYSIJA::get('wp_tools', 'helper');
|
308 |
+
$post_statuses = $helper_wp_tools->get_post_statuses();
|
309 |
+
$post_types = $helper_wp_tools->get_post_types();
|
310 |
+
|
311 |
+
// filter by post_type
|
312 |
+
if(isset($params['post_type'])) {
|
313 |
+
$post_types_filter = array();
|
314 |
+
if(strlen(trim($params['post_type'])) === 0) {
|
315 |
+
$post_types_filter = array_keys($post_types);
|
316 |
+
$post_types_filter[] = 'post';
|
317 |
+
$post_types_filter[] = 'page';
|
318 |
+
} else {
|
319 |
+
$post_types_filter = trim($params['post_type']);
|
320 |
+
}
|
321 |
+
// set condition on post type
|
322 |
+
$params['post_type'] = $post_types_filter;
|
323 |
+
}
|
324 |
+
|
325 |
+
// query offset when doing incremental loading
|
326 |
+
$query_offset = (isset($_REQUEST['query_offset']) && (int)$_REQUEST['query_offset'] >= 0) ? (int)$_REQUEST['query_offset'] : 0;
|
327 |
+
$params['query_offset'] = $query_offset;
|
328 |
+
|
329 |
+
// fetch posts
|
330 |
+
$helper_articles = WYSIJA::get('articles', 'helper');
|
331 |
+
|
332 |
+
// set is_search_query (true) to get a count in addition to the results
|
333 |
+
$params['is_search_query'] = true;
|
334 |
+
|
335 |
+
$model_wp_posts = WYSIJA::get('wp_posts','model');
|
336 |
+
$data = $model_wp_posts->get_posts($params);
|
337 |
+
|
338 |
+
// extract data
|
339 |
+
$posts = $data['rows'];
|
340 |
+
// contains the total number of rows available
|
341 |
+
$count = $data['count'];
|
342 |
+
|
343 |
+
// return results
|
344 |
+
$result = array(
|
345 |
+
'result' => true,
|
346 |
+
'append' => ($query_offset > 0)
|
347 |
+
);
|
348 |
+
|
349 |
+
if(empty($posts) === false) {
|
350 |
+
foreach($posts as $key => $post) {
|
351 |
+
// interpret shortcodes
|
352 |
+
if($interpret_shortcode === true) {
|
353 |
+
$posts[$key]['post_content'] = apply_filters('the_content', $posts[$key]['post_content']);
|
354 |
+
}
|
355 |
+
|
356 |
+
// get thumbnail
|
357 |
+
$posts[$key]['post_image'] = $helper_articles->getImage($post);
|
358 |
+
|
359 |
+
// set post status
|
360 |
+
$post_status_label = '';
|
361 |
+
if(isset($post_statuses[$posts[$key]['post_status']])) {
|
362 |
+
$post_status_label = $post_statuses[$posts[$key]['post_status']];
|
363 |
+
}
|
364 |
+
$posts[$key]['post_status'] = $post_status_label;
|
365 |
+
}
|
366 |
+
$result['posts'] = $posts;
|
367 |
+
$result['total'] = (int)$count['total'];
|
368 |
+
}else {
|
369 |
+
$result['msg'] = __('There are no posts corresponding to that search.', WYSIJA);
|
370 |
+
$result['result'] = false;
|
371 |
+
}
|
372 |
+
|
373 |
+
return $result;
|
374 |
+
}
|
375 |
+
|
376 |
+
function insert_articles() {
|
377 |
+
// get raw params
|
378 |
+
$raw_params = $_REQUEST['data'];
|
379 |
+
|
380 |
+
// format params
|
381 |
+
$params = array();
|
382 |
+
foreach($raw_params as $value) {
|
383 |
+
$params[$value['name']] = $value['value'];
|
384 |
+
}
|
385 |
+
|
386 |
+
if($params['show_divider'] === 'yes') {
|
387 |
+
// get divider
|
388 |
+
$divider = $_REQUEST['divider'];
|
389 |
+
} else {
|
390 |
+
$divider = null;
|
391 |
+
}
|
392 |
+
$params['divider'] = $divider;
|
393 |
+
|
394 |
+
// get post ids
|
395 |
+
$post_ids = array();
|
396 |
+
if(isset($_REQUEST['post_ids']) && strlen(trim($_REQUEST['post_ids'])) > 0) {
|
397 |
+
$post_ids = explode(',', $_REQUEST['post_ids']);
|
398 |
+
}
|
399 |
+
|
400 |
+
if(empty($post_ids)) {
|
401 |
+
// return error
|
402 |
+
$res['msg'] = __('Please select an article.', WYSIJA);
|
403 |
+
$res['result'] = false;
|
404 |
+
return $res;
|
405 |
+
}
|
406 |
+
|
407 |
+
// specify custom fields to get from posts
|
408 |
+
$post_params = array(
|
409 |
+
'include' => $post_ids,
|
410 |
+
'post_fields' => array('post_title', 'post_content', 'post_excerpt', 'post_author', 'post_type', 'post_status')
|
411 |
+
);
|
412 |
+
|
413 |
+
// include sort by parameter into post params
|
414 |
+
$post_params['sort_by'] = $params['sort_by'];
|
415 |
+
|
416 |
+
// get posts
|
417 |
+
$model_wp_posts = WYSIJA::get('wp_posts', 'model');
|
418 |
+
$posts = $model_wp_posts->get_posts($post_params);
|
419 |
+
|
420 |
+
// check if we need to interpret shortcodes
|
421 |
+
$model_config = WYSIJA::get('config', 'model');
|
422 |
+
$interpret_shortcode = (bool)$model_config->getValue('interp_shortcode');
|
423 |
+
|
424 |
+
// get some model and helpers
|
425 |
+
$helper_articles = WYSIJA::get('articles', 'helper');
|
426 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
427 |
+
|
428 |
+
$output = '';
|
429 |
+
|
430 |
+
// save parameters for next time
|
431 |
+
$model_config->save(array('insert_post_parameters' => $helper_wj_engine->encodeParameters($params)));
|
432 |
+
|
433 |
+
foreach($posts as $key => $post) {
|
434 |
+
if($interpret_shortcode === true) {
|
435 |
+
// interpret shortcodes
|
436 |
+
$posts[$key]['post_content'] = apply_filters('the_content', $post['post_content']);
|
437 |
+
}
|
438 |
+
// get thumbnail
|
439 |
+
$posts[$key]['post_image'] = $helper_articles->getImage($post);
|
440 |
+
}
|
441 |
+
|
442 |
+
$output .= base64_encode($helper_wj_engine->renderPostsToBlocks($posts, $params));
|
443 |
+
|
444 |
+
if(strlen($output) > 0) {
|
445 |
+
$res['result'] = true;
|
446 |
+
$res['posts'] = $output;
|
447 |
+
}else {
|
448 |
+
$res['msg'] = __('There are no posts corresponding to that search.',WYSIJA);
|
449 |
+
$res['result'] = false;
|
450 |
+
}
|
451 |
+
|
452 |
+
return $res;
|
453 |
+
}
|
454 |
+
|
455 |
+
function send_preview($spamtest=false){
|
456 |
+
$mailer=WYSIJA::get('mailer','helper');
|
457 |
+
$email_id = $_REQUEST['id'];
|
458 |
+
$resultarray=array();
|
459 |
+
|
460 |
+
// update data in DB
|
461 |
+
$model_email = WYSIJA::get('email', 'model');
|
462 |
+
$model_email->getFormat=OBJECT;
|
463 |
+
$email_object = $model_email->getOne(false,array('email_id' => $email_id));
|
464 |
+
$mailer->testemail=true;
|
465 |
+
|
466 |
+
|
467 |
+
if(isset($_REQUEST['data'])){
|
468 |
+
$dataTemp=$_REQUEST['data'];
|
469 |
+
$_REQUEST['data']=array();
|
470 |
+
foreach($dataTemp as $val) $_REQUEST['data'][$val['name']]=$val['value'];
|
471 |
+
unset($dataTemp);
|
472 |
+
foreach($_REQUEST['data'] as $k =>$v){
|
473 |
+
$newkey=str_replace(array('wysija[email][',']'),'',$k);
|
474 |
+
$configVal[$newkey]=$v;
|
475 |
+
}
|
476 |
+
if(isset($configVal['from_name'])){
|
477 |
+
$params=array(
|
478 |
+
'from_name'=>$configVal['from_name'],
|
479 |
+
'from_email'=>$configVal['from_email'],
|
480 |
+
'replyto_name'=>$configVal['replyto_name'],
|
481 |
+
'replyto_email'=>$configVal['replyto_email']);
|
482 |
+
if(isset($configVal['subject'])) $email_object->subject=$configVal['subject'];
|
483 |
+
}
|
484 |
+
|
485 |
+
}else{
|
486 |
+
$params=array(
|
487 |
+
'from_name'=>$email_object->from_name,
|
488 |
+
'from_email'=>$email_object->from_email,
|
489 |
+
'replyto_name'=>$email_object->replyto_name,
|
490 |
+
'replyto_email'=>$email_object->replyto_email
|
491 |
+
);
|
492 |
+
}
|
493 |
+
if(strpos($_REQUEST['receiver'], ',')) {
|
494 |
+
$receivers = explode(',',$_REQUEST['receiver']);
|
495 |
+
} else if(strpos($_REQUEST['receiver'], ';')) {
|
496 |
+
$receivers = explode(';',$_REQUEST['receiver']);
|
497 |
+
} else {
|
498 |
+
$receivers = array($_REQUEST['receiver']);
|
499 |
+
}
|
500 |
+
|
501 |
+
$user_model = WYSIJA::get('user', 'model');
|
502 |
+
foreach($receivers as $key => $receiver){
|
503 |
+
$receiver = trim($receiver);
|
504 |
+
$dummy_receiver = $user_model->get_object_by_email($receiver);
|
505 |
+
if(empty($dummy_receiver)){
|
506 |
+
$dummy_receiver = new stdClass();
|
507 |
+
$dummy_receiver->user_id = 0;
|
508 |
+
$dummy_receiver->email = $receiver;
|
509 |
+
$dummy_receiver->status = 1;
|
510 |
+
$dummy_receiver->lastname = $dummy_receiver->firstname = '';
|
511 |
+
}
|
512 |
+
|
513 |
+
if($spamtest){
|
514 |
+
$langextra = '';
|
515 |
+
$dummy_receiver->firstname ='Mail Tester';
|
516 |
+
|
517 |
+
$wp_lang = get_locale();
|
518 |
+
if(!empty($wp_lang)) $langextra ='&lang='.$wp_lang;
|
519 |
+
$resultarray['urlredirect']='http://www.mail-tester.com/check.php?id='.urlencode($dummy_receiver->email).$langextra;
|
520 |
+
}
|
521 |
+
$receivers[$key] = $dummy_receiver;
|
522 |
+
|
523 |
+
}
|
524 |
+
|
525 |
+
$email_clone=array();
|
526 |
+
foreach($email_object as $kk=>$vv) $email_clone[$kk]=$vv;
|
527 |
+
|
528 |
+
|
529 |
+
$wj_engine = WYSIJA::get('wj_engine', 'helper');
|
530 |
+
// set data & styles
|
531 |
+
if(isset($email_clone['wj_data'])) { $wj_engine->setData($email_clone['wj_data'], true); } else { $wj_engine->setData(); }
|
532 |
+
if(isset($email_clone['wj_styles'])) { $wj_engine->setStyles($email_clone['wj_styles'], true); } else { $wj_engine->setStyles(); }
|
533 |
+
|
534 |
+
// generate email html body
|
535 |
+
$body = $wj_engine->renderEmail($email_clone);
|
536 |
+
|
537 |
+
// get back email data as it will be updated during the rendering (articles ids + articles count)
|
538 |
+
$email_child = $wj_engine->getEmailData();
|
539 |
+
|
540 |
+
// [total] [number] and [post_title] are only valid for post notifications newsletter
|
541 |
+
if((int)$email_child['type'] === 2 && isset($email_child['params']['autonl']['event']) &&
|
542 |
+
$email_child['params']['autonl']['event'] === 'new-articles' && isset($email_child['params']['autonl']['articles'])){
|
543 |
+
|
544 |
+
$item_count = 0;
|
545 |
+
$total_count = 1;
|
546 |
+
$first_subject = '';
|
547 |
+
|
548 |
+
if(isset($email_child['params']['autonl']['articles']['count'])) $item_count = (int)$email_child['params']['autonl']['articles']['count'];
|
549 |
+
if(isset($email_child['params']['autonl']['articles']['first_subject'])) $first_subject = $email_child['params']['autonl']['articles']['first_subject'];
|
550 |
+
if(isset($email_child['params']['autonl']['total_child'])) $total_count = (int)$email_child['params']['autonl']['total_child'] + 1;
|
551 |
+
|
552 |
+
$email_object->subject = str_replace(
|
553 |
+
array('[total]','[number]','[post_title]'),
|
554 |
+
array($item_count, $total_count, $first_subject),
|
555 |
+
$email_child['subject']
|
556 |
+
);
|
557 |
+
}
|
558 |
+
$successmsg = __('Your email preview has been sent to %1$s', WYSIJA);
|
559 |
+
|
560 |
+
// correction added for post notifications with the tag [newsletter:post_title] failing to send
|
561 |
+
if(isset($email_object->params['autonl']) && isset($email_child['params']['autonl'])){
|
562 |
+
$email_object->params['autonl']=$email_child['params']['autonl'];
|
563 |
+
}
|
564 |
+
|
565 |
+
if(isset($email_object->params)) {
|
566 |
+
$params['params']=$email_object->params;
|
567 |
+
|
568 |
+
if(isset($configVal['params[googletrackingcode'])){
|
569 |
+
$paramsemail=array();
|
570 |
+
if(!is_array($email_object->params)) $paramsemail=unserialize(base64_decode($email_object->params));
|
571 |
+
|
572 |
+
if(trim($configVal['params[googletrackingcode'])) {
|
573 |
+
$paramsemail['googletrackingcode']=$configVal['params[googletrackingcode'];
|
574 |
+
}
|
575 |
+
else {
|
576 |
+
unset($paramsemail['googletrackingcode']);
|
577 |
+
}
|
578 |
+
$params['params'] = base64_encode(serialize($paramsemail));
|
579 |
+
}
|
580 |
+
}
|
581 |
+
|
582 |
+
$params['email_id'] = $email_object->email_id;
|
583 |
+
$receiversList = array();
|
584 |
+
$res = false;
|
585 |
+
foreach($receivers as $receiver){
|
586 |
+
if($mailer->sendSimple($receiver, stripslashes($email_object->subject),$email_object->body,$params)) {
|
587 |
+
$res = true;
|
588 |
+
$receiversList[] = $receiver->email;
|
589 |
+
}
|
590 |
+
WYSIJA::log('preview_sent', $mailer, 'manual');
|
591 |
+
}
|
592 |
+
|
593 |
+
if($res === true) {
|
594 |
+
$this->notice(sprintf($successmsg, implode(', ', $receiversList)));
|
595 |
+
}
|
596 |
+
|
597 |
+
$resultarray['result'] = $res;
|
598 |
+
|
599 |
+
return $resultarray;
|
600 |
+
}
|
601 |
+
|
602 |
+
/**
|
603 |
+
* send spam test function step 2 of the newsletter edition process
|
604 |
+
*/
|
605 |
+
function send_spamtest(){
|
606 |
+
return apply_filters('wysija_send_spam_test','',$this);
|
607 |
+
}
|
608 |
+
|
609 |
+
function set_divider()
|
610 |
+
{
|
611 |
+
$src = isset($_POST['wysijaData']['src']) ? $_POST['wysijaData']['src'] : NULL;
|
612 |
+
$width = isset($_POST['wysijaData']['width']) ? (int)$_POST['wysijaData']['width'] : NULL;
|
613 |
+
$height = isset($_POST['wysijaData']['height']) ? (int)$_POST['wysijaData']['height'] : NULL;
|
614 |
+
|
615 |
+
if($src === NULL OR $width === NULL OR $height === NULL) {
|
616 |
+
// there is a least one missing parameter, fallback to default divider
|
617 |
+
$dividersHelper = WYSIJA::get('dividers', 'helper');
|
618 |
+
$divider = $dividersHelper->getDefault();
|
619 |
+
} else {
|
620 |
+
// use provided params
|
621 |
+
$divider = array(
|
622 |
+
'src' => $src,
|
623 |
+
'width' => $width,
|
624 |
+
'height' => $height
|
625 |
+
);
|
626 |
+
}
|
627 |
+
|
628 |
+
// update campaign parameters
|
629 |
+
$email_id = (int)$_REQUEST['id'];
|
630 |
+
$campaignsHelper = WYSIJA::get('campaigns', 'helper');
|
631 |
+
$campaignsHelper->saveParameters($email_id, 'divider', $divider);
|
632 |
+
|
633 |
+
// set params
|
634 |
+
$block = array_merge(array('no-block' => true, 'type' => 'divider'), $divider);
|
635 |
+
|
636 |
+
$helper_wj_engine=WYSIJA::get('wj_engine','helper');
|
637 |
+
return base64_encode($helper_wj_engine->renderEditorBlock($block));
|
638 |
+
}
|
639 |
+
|
640 |
+
function get_social_bookmarks() {
|
641 |
+
$size = isset($_POST['wysijaData']['size']) ? $_POST['wysijaData']['size'] : NULL;
|
642 |
+
$theme = isset($_POST['wysijaData']['theme']) ? $_POST['wysijaData']['theme'] : NULL;
|
643 |
+
|
644 |
+
$bookmarksHelper = WYSIJA::get('bookmarks', 'helper');
|
645 |
+
$bookmarks = $bookmarksHelper->getAll($size, $theme);
|
646 |
+
return json_encode(array('icons' => $bookmarks));
|
647 |
+
}
|
648 |
+
|
649 |
+
function generate_social_bookmarks() {
|
650 |
+
|
651 |
+
$size = 'medium';
|
652 |
+
$iconset = '01';
|
653 |
+
|
654 |
+
if(isset($_POST['wysijaData']) && !empty($_POST['wysijaData'])) {
|
655 |
+
$data = $_POST['wysijaData'];
|
656 |
+
$items = array();
|
657 |
+
|
658 |
+
foreach($data as $key => $values) {
|
659 |
+
if($values['name'] === 'bookmarks-size') {
|
660 |
+
// get size
|
661 |
+
$size = $values['value'];
|
662 |
+
} else if($values['name'] === 'bookmarks-theme') {
|
663 |
+
// get theme name
|
664 |
+
$theme = $values['value'];
|
665 |
+
} else if($values['name'] === 'bookmarks-iconset') {
|
666 |
+
// get iconset
|
667 |
+
$iconset = $values['value'];
|
668 |
+
if(strlen(trim($iconset)) === 0) {
|
669 |
+
$this->error('No iconset specified', false);
|
670 |
+
return false;
|
671 |
+
}
|
672 |
+
} else {
|
673 |
+
$keys = explode('-', $values['name']);
|
674 |
+
$network = $keys[1];
|
675 |
+
$property = $keys[2];
|
676 |
+
if(array_key_exists($network, $items)) {
|
677 |
+
$items[$network][$property] = $values['value'];
|
678 |
+
} else {
|
679 |
+
$items[$network] = array($property => $values['value']);
|
680 |
+
}
|
681 |
+
}
|
682 |
+
}
|
683 |
+
}
|
684 |
+
|
685 |
+
$urls = array();
|
686 |
+
// check data and remove network with an empty url
|
687 |
+
foreach($items as $network => $item) {
|
688 |
+
if(strlen(trim($item['url'])) === 0) {
|
689 |
+
// empty url
|
690 |
+
unset($items[$network]);
|
691 |
+
} else {
|
692 |
+
// url specified
|
693 |
+
$urls[$network] = $item['url'];
|
694 |
+
}
|
695 |
+
}
|
696 |
+
|
697 |
+
// check if there's at least one url left
|
698 |
+
if(empty($urls)) {
|
699 |
+
$this->error('No url specified', false);
|
700 |
+
return false;
|
701 |
+
}
|
702 |
+
|
703 |
+
// save url in config
|
704 |
+
$config=WYSIJA::get('config','model');
|
705 |
+
$config->save(array('social_bookmarks' => $urls));
|
706 |
+
|
707 |
+
// get iconset icons
|
708 |
+
$bookmarksHelper = WYSIJA::get('bookmarks', 'helper');
|
709 |
+
|
710 |
+
// if the iconset is 00, then it's the theme's bookmarks
|
711 |
+
if($iconset === '00') {
|
712 |
+
$icons = $bookmarksHelper->getAllByTheme($theme);
|
713 |
+
} else {
|
714 |
+
// otherwise it's a basic iconset
|
715 |
+
$icons = $bookmarksHelper->getAllByIconset($size, $iconset);
|
716 |
+
}
|
717 |
+
|
718 |
+
|
719 |
+
// format data
|
720 |
+
$block = array(
|
721 |
+
'position' => 1,
|
722 |
+
'type' => 'gallery',
|
723 |
+
'items' => array(),
|
724 |
+
'alignment' => 'center'
|
725 |
+
);
|
726 |
+
|
727 |
+
$width = 0;
|
728 |
+
foreach($items as $key => $item) {
|
729 |
+
$block['items'][] = array_merge($item, $icons[$key], array('alt' => ucfirst($key)));
|
730 |
+
$width += (int)$icons[$key]['width'];
|
731 |
+
}
|
732 |
+
// add margin between icons
|
733 |
+
$width += (count($block['items']) - 1) * 10;
|
734 |
+
// set optimal width
|
735 |
+
$block['width'] = max(0, min($width, 564));
|
736 |
+
|
737 |
+
$helper_wj_engine=WYSIJA::get('wj_engine','helper');
|
738 |
+
return base64_encode($helper_wj_engine->renderEditorBlock($block));
|
739 |
+
}
|
740 |
+
|
741 |
+
function install_theme() {
|
742 |
+
if( isset($_REQUEST['theme_id'])){
|
743 |
+
global $wp_version;
|
744 |
+
//check if theme is premium if you have the premium licence
|
745 |
+
if(isset($_REQUEST['premium']) && $_REQUEST['premium']){
|
746 |
+
$getpremiumtheme=apply_filters('wysija_install_theme_premium', false);
|
747 |
+
|
748 |
+
if(!$getpremiumtheme){
|
749 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
750 |
+
$themes = $helper_wj_engine->renderThemes();
|
751 |
+
return array('result'=>false, 'themes' => $themes);
|
752 |
+
}
|
753 |
+
}
|
754 |
+
|
755 |
+
$helperToolbox = WYSIJA::get('toolbox','helper');
|
756 |
+
$domain_name = $helperToolbox->_make_domain_name(admin_url('admin.php'));
|
757 |
+
|
758 |
+
$request = 'http://api.mailpoet.com/download/zip/'.$_REQUEST['theme_id'].'?domain='.$domain_name;
|
759 |
+
|
760 |
+
$args = array(
|
761 |
+
'timeout' => 30,
|
762 |
+
'body' => array( ),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
763 |
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
|
764 |
+
);
|
765 |
+
$raw_response = wp_remote_post( $request, $args );
|
766 |
+
|
767 |
+
if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ){
|
768 |
+
if(method_exists($raw_response, 'get_error_messages')){
|
769 |
+
$this->error($raw_response->get_error_messages());
|
770 |
+
}
|
771 |
+
$ZipfileResult = false;
|
772 |
+
}else{
|
773 |
+
$ZipfileResult = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
|
774 |
+
}
|
775 |
+
|
776 |
+
if($ZipfileResult === false){
|
777 |
+
$result = false;
|
778 |
+
$this->error(__('We were unable to contact the API, the site may be down. Please try again later.',WYSIJA),true);
|
779 |
+
}else{
|
780 |
+
$themesHelp=WYSIJA::get('themes','helper');
|
781 |
+
$result = $themesHelp->installTheme($ZipfileResult);
|
782 |
+
|
783 |
+
// refresh themes list
|
784 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
785 |
+
$themes = $helper_wj_engine->renderThemes();
|
786 |
+
}
|
787 |
+
}else{
|
788 |
+
$result = false;
|
789 |
+
$themes = '';
|
790 |
+
$this->notice('missing info');
|
791 |
+
}
|
792 |
+
|
793 |
+
return array('result' => $result, 'themes' => $themes);
|
794 |
+
}
|
795 |
+
|
796 |
+
function refresh_themes() {
|
797 |
+
// refresh themes list
|
798 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
799 |
+
return array('result'=>true, 'themes' => $helper_wj_engine->renderThemes());
|
800 |
+
}
|
801 |
+
|
802 |
+
function generate_auto_post() {
|
803 |
+
// get params and generate html
|
804 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
805 |
+
$helper_articles = WYSIJA::get('articles', 'helper');
|
806 |
+
|
807 |
+
// get parameters
|
808 |
+
$block_params = array();
|
809 |
+
if(isset($_POST['wysijaData'])) {
|
810 |
+
// store category ids (TBR)
|
811 |
+
$category_ids = array();
|
812 |
+
|
813 |
+
foreach($_POST['wysijaData'] as $pairs) {
|
814 |
+
// special cases
|
815 |
+
switch($pairs['name']) {
|
816 |
+
case 'author_label':
|
817 |
+
case 'category_label':
|
818 |
+
case 'readmore':
|
819 |
+
case 'nopost_message':
|
820 |
+
$block_params[] = array('key' => $pairs['name'], 'value' => base64_encode(stripslashes($pairs['value'])));
|
821 |
+
break;
|
822 |
+
case 'category_ids':
|
823 |
+
$category_ids[] = (int)$pairs['value'];
|
824 |
+
break;
|
825 |
+
default:
|
826 |
+
$block_params[] = array('key' => $pairs['name'], 'value' => $pairs['value']);
|
827 |
+
}
|
828 |
+
}
|
829 |
+
|
830 |
+
// make sure we have only unique ids in categories
|
831 |
+
$block_params[] = array('key' => 'category_ids', 'value' => join(',', array_unique($category_ids)));
|
832 |
+
}
|
833 |
+
|
834 |
+
if(empty($block_params)) {
|
835 |
+
// an error occurred, do something!
|
836 |
+
return false;
|
837 |
+
} else {
|
838 |
+
$data = array(
|
839 |
+
'type' => 'auto-post',
|
840 |
+
'params' => $block_params
|
841 |
+
);
|
842 |
+
return base64_encode($helper_wj_engine->renderEditorBlock($data));
|
843 |
+
}
|
844 |
+
}
|
845 |
+
|
846 |
+
function load_auto_post() {
|
847 |
+
$params = array();
|
848 |
+
|
849 |
+
if(isset($_POST['wysijaData'])) {
|
850 |
+
|
851 |
+
$pairs = explode('&', $_POST['wysijaData']);
|
852 |
+
|
853 |
+
foreach($pairs as $pair) {
|
854 |
+
list($key, $value) = explode('=', $pair);
|
855 |
+
switch($key) {
|
856 |
+
case 'autopost_count':
|
857 |
+
$params[$key] = (int)$value;
|
858 |
+
break;
|
859 |
+
case 'readmore':
|
860 |
+
case 'author_label':
|
861 |
+
case 'category_label':
|
862 |
+
case 'nopost_message':
|
863 |
+
$params[$key] = base64_decode($value);
|
864 |
+
break;
|
865 |
+
case 'exclude':
|
866 |
+
$params[$key] = explode(',', $value);
|
867 |
+
break;
|
868 |
+
default:
|
869 |
+
$params[$key] = $value;
|
870 |
+
}
|
871 |
+
}
|
872 |
+
}
|
873 |
+
|
874 |
+
if(empty($params)) {
|
875 |
+
// an error occurred, do something!
|
876 |
+
return false;
|
877 |
+
} else {
|
878 |
+
|
879 |
+
// get email params
|
880 |
+
$email_id = (int)$_REQUEST['id'];
|
881 |
+
$model_email = WYSIJA::get('email', 'model');
|
882 |
+
$email = $model_email->getOne(array('params','sent_at','campaign_id'), array('email_id' => $email_id));
|
883 |
+
|
884 |
+
$helper_articles = WYSIJA::get('articles', 'helper');
|
885 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
886 |
+
|
887 |
+
// see if posts have already been sent
|
888 |
+
if(!empty($email['params']['autonl']['articles']['ids'])) {
|
889 |
+
if(!isset($params['exclude'])) { $params['exclude'] = array(); }
|
890 |
+
|
891 |
+
$params['exclude'] = array_unique(array_merge($email['params']['autonl']['articles']['ids'], $params['exclude']));
|
892 |
+
}
|
893 |
+
|
894 |
+
//we set the post_date to filter articles only older than that one
|
895 |
+
if(isset($email['params']['autonl']['firstSend'])){
|
896 |
+
$params['post_date'] = $email['params']['autonl']['firstSend'];
|
897 |
+
}
|
898 |
+
|
899 |
+
// if immediate let it know to the get post
|
900 |
+
if(isset($email['params']['autonl']['articles']['immediatepostid'])){
|
901 |
+
$params['include'] = $email['params']['autonl']['articles']['immediatepostid'];
|
902 |
+
$params['post_limit'] = 1;
|
903 |
+
}else{
|
904 |
+
//we set the post_date to filter articles only older than the last time we sent articles
|
905 |
+
if(isset($email['params']['autonl']['lastSend'])){
|
906 |
+
$params['post_date'] = $email['params']['autonl']['lastSend'];
|
907 |
+
}else{
|
908 |
+
//get the latest child newsletter sent_at value
|
909 |
+
$mEmail=WYSIJA::get('email','model');
|
910 |
+
$mEmail->reset();
|
911 |
+
$mEmail->orderBy('email_id','DESC');
|
912 |
+
$lastEmailSent=$mEmail->getOne(false,array('campaign_id'=>$email['campaign_id'],'type'=>'1'));
|
913 |
+
|
914 |
+
if(!empty($lastEmailSent)) $params['post_date'] = $lastEmailSent['sent_at'];
|
915 |
+
}
|
916 |
+
}
|
917 |
+
|
918 |
+
// get posts
|
919 |
+
$params['post_fields'] = array('post_title', 'post_content', 'post_excerpt', 'post_author');
|
920 |
+
$model_wp_posts = WYSIJA::get('wp_posts','model');
|
921 |
+
$posts = $model_wp_posts->get_posts($params);
|
922 |
+
|
923 |
+
if(empty($posts)) {
|
924 |
+
// nothing to display
|
925 |
+
$posts = array();
|
926 |
+
} else {
|
927 |
+
// used to keep track of post ids present in the auto post
|
928 |
+
$post_ids = array();
|
929 |
+
|
930 |
+
// cleanup post and get image
|
931 |
+
foreach($posts as $key => $post) {
|
932 |
+
if($params['image_alignment'] !== 'none') {
|
933 |
+
// attempt to get post image
|
934 |
+
$posts[$key]['post_image'] = $helper_articles->getImage($post);
|
935 |
+
}
|
936 |
+
|
937 |
+
// store article id
|
938 |
+
$post_ids[] = $post['ID'];
|
939 |
+
}
|
940 |
+
// store article ids
|
941 |
+
$params['post_ids'] = join(',', $post_ids);
|
942 |
+
}
|
943 |
+
|
944 |
+
// get divider if necessary (for immediate post notification, the "show_divider" parameter is not available)
|
945 |
+
if(isset($params['show_divider']) && $params['show_divider'] === 'yes') {
|
946 |
+
if(isset($email['params']['divider'])) {
|
947 |
+
$params['divider'] = $email['params']['divider'];
|
948 |
+
} else {
|
949 |
+
$helper_dividers = WYSIJA::get('dividers', 'helper');
|
950 |
+
$params['divider'] = $helper_dividers->getDefault();
|
951 |
+
}
|
952 |
+
}
|
953 |
+
|
954 |
+
return base64_encode($helper_wj_engine->renderEditorAutoPost($posts, $params));
|
955 |
+
}
|
956 |
+
}
|
957 |
}
|
controllers/ajax/statistics.php
CHANGED
@@ -1,95 +1,86 @@
|
|
1 |
<?php
|
|
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
|
4 |
require_once(WYSIJA_CORE.'module'.DS.'statistics.php'); // @todo
|
5 |
|
6 |
-
class WYSIJA_control_back_statistics extends WYSIJA_control
|
7 |
-
{
|
8 |
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
}
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
$params['to'] = !empty($_REQUEST['filter']['to']) ? $_REQUEST['filter']['to'] : null;
|
70 |
-
$params['order_by'] = $order_by;
|
71 |
-
$params['order_direction'] = $order_direction;
|
72 |
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
WYSIJA_module_statistics::GROUP_BY_DATE; // $date_interval->days == 0, means, no begin date, no end date
|
88 |
|
89 |
-
// Hack!
|
90 |
-
$_REQUEST['limit_pp'] = $params['top'];// Pagination, mark current selected value
|
91 |
|
92 |
-
return $params;
|
93 |
-
}
|
94 |
|
95 |
}
|
1 |
<?php
|
2 |
+
|
3 |
defined('WYSIJA') or die('Restricted access');
|
4 |
|
5 |
require_once(WYSIJA_CORE.'module'.DS.'statistics.php'); // @todo
|
6 |
|
7 |
+
class WYSIJA_control_back_statistics extends WYSIJA_control {
|
|
|
8 |
|
9 |
+
/**
|
10 |
+
* Main model of this controller
|
11 |
+
* @var string
|
12 |
+
*/
|
13 |
+
public $model = 'statistics';
|
14 |
|
15 |
+
/**
|
16 |
+
* Main view of this controller
|
17 |
+
* @var string
|
18 |
+
*/
|
19 |
+
public $view = 'statistics';
|
20 |
|
21 |
+
/**
|
22 |
+
* Render a hook of a specific module
|
23 |
+
* @return string
|
24 |
+
*/
|
25 |
+
public function get_block() {
|
26 |
+
if (empty($_REQUEST['block']))
|
27 |
+
return '';
|
28 |
+
$module = $_REQUEST['block'];
|
29 |
+
$hook_name = 'hook_stats';
|
30 |
+
return apply_filters('custom_module_hook', '', $module, $hook_name, $this->get_post_params());
|
31 |
+
}
|
|
|
32 |
|
33 |
+
protected function get_post_params() {
|
34 |
+
$params = array();
|
35 |
+
$order_by = !empty($_REQUEST['filter']['orderBy']) ? $_REQUEST['filter']['orderBy'] : null;
|
36 |
+
switch (strtolower($order_by)) {
|
37 |
+
case 'sent':
|
38 |
+
$order_by = WYSIJA_module_statistics::ORDER_BY_SENT;
|
39 |
+
break;
|
40 |
+
case 'open':
|
41 |
+
$order_by = WYSIJA_module_statistics::ORDER_BY_OPEN;
|
42 |
+
break;
|
43 |
+
case 'click':
|
44 |
+
$order_by = WYSIJA_module_statistics::ORDER_BY_CLICK;
|
45 |
+
break;
|
46 |
+
case 'unsubscribe':
|
47 |
+
$order_by = WYSIJA_module_statistics::ORDER_BY_UNSUBSCRIBE;
|
48 |
+
break;
|
49 |
+
default:
|
50 |
+
$order_by = null;
|
51 |
+
break;
|
52 |
+
}
|
53 |
+
$order_direction = !empty($_REQUEST['filter']['orderDirection']) ? $_REQUEST['filter']['orderDirection'] : null;
|
54 |
+
switch (strtolower($order_direction)) {
|
55 |
+
case 'asc':
|
56 |
+
$order_direction = WYSIJA_module_statistics::ORDER_DIRECTION_ASC;
|
57 |
+
break;
|
58 |
+
case 'desc':
|
59 |
+
default:
|
60 |
+
$order_direction = WYSIJA_module_statistics::ORDER_DIRECTION_DESC;
|
61 |
+
break;
|
62 |
+
}
|
63 |
+
$params['top'] = !empty($_REQUEST['filter']['itemPerPage']) ? (int) $_REQUEST['filter']['itemPerPage'] : WYSIJA_module_statistics::DEFAULT_TOP_RECORDS;
|
64 |
+
$params['from'] = !empty($_REQUEST['filter']['from']) ? $_REQUEST['filter']['from'] : null;
|
65 |
+
$params['to'] = !empty($_REQUEST['filter']['to']) ? $_REQUEST['filter']['to'] : null;
|
66 |
+
$params['order_by'] = $order_by;
|
67 |
+
$params['order_direction'] = $order_direction;
|
|
|
|
|
|
|
68 |
|
69 |
+
// this doesn't work when php is less than 5.3, this is the case on my host (ben) which is very popular in France, SPain and UK
|
70 |
+
// we cannot use functions from php 5.3
|
71 |
+
if(function_exists('date_diff')){
|
72 |
+
$this->data['date_interval'] = date_diff(date_create($params['from']), date_create($params['to']));
|
73 |
+
}else{
|
74 |
+
$duration = strtotime($params['to']) - strtotime($params['from']);
|
75 |
+
$helper_toolbox = WYSIJA::get('toolbox' , 'helper');
|
76 |
+
$this->data['date_interval'] = (object)$helper_toolbox->convert_seconds_to_array($duration , false);
|
77 |
+
}
|
78 |
+
$params['group_by'] = ( $this->data['date_interval']->days == 0 || $this->data['date_interval']->days > WYSIJA_module_statistics::SWITCHING_DATE_TO_MONTH_THRESHOLD) ?
|
79 |
+
WYSIJA_module_statistics::GROUP_BY_MONTH :
|
80 |
+
WYSIJA_module_statistics::GROUP_BY_DATE; // $date_interval->days == 0, means, no begin date, no end date
|
81 |
+
return $params;
|
82 |
+
}
|
|
|
83 |
|
|
|
|
|
84 |
|
|
|
|
|
85 |
|
86 |
}
|
controllers/ajax/tmce.php
CHANGED
@@ -1,139 +1,140 @@
|
|
1 |
-
<?php
|
2 |
-
defined('WYSIJA') or die('Restricted access');
|
3 |
-
class WYSIJA_control_back_tmce extends WYSIJA_control{
|
4 |
-
|
5 |
-
function WYSIJA_control_back_tmce(){
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
$
|
13 |
-
$data
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
if
|
47 |
-
|
48 |
-
$
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
$model_forms
|
55 |
-
$
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
$
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
$
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
$custom_fields['email']['
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
|
|
139 |
}
|
1 |
+
<?php
|
2 |
+
defined('WYSIJA') or die('Restricted access');
|
3 |
+
class WYSIJA_control_back_tmce extends WYSIJA_control{
|
4 |
+
|
5 |
+
function WYSIJA_control_back_tmce(){
|
6 |
+
if(!WYSIJA::current_user_can('wysija_subscriwidget')) die('Action is forbidden.');
|
7 |
+
parent::WYSIJA_control();
|
8 |
+
$this->viewObj=WYSIJA::get('tmce','view');
|
9 |
+
}
|
10 |
+
|
11 |
+
function subscribersAdd(){
|
12 |
+
$this->viewObj->title=__('Insert Total of Subscribers',WYSIJA);
|
13 |
+
$data = array();
|
14 |
+
$data['lists'] = WYSIJA::get('list','model')->getLists();
|
15 |
+
foreach ($data['lists'] as $k => $list){
|
16 |
+
if (empty($list['is_enabled']) OR empty($list['is_public'])) unset($data['lists'][$k]);
|
17 |
+
}
|
18 |
+
$data['confirm_dbleoptin'] = WYSIJA::get('config','model')->getValue('confirm_dbleoptin');
|
19 |
+
|
20 |
+
$this->viewObj->subscribersAdd($data);
|
21 |
+
exit;
|
22 |
+
}
|
23 |
+
|
24 |
+
function subscribersEdit(){
|
25 |
+
|
26 |
+
}
|
27 |
+
|
28 |
+
function registerAdd(){
|
29 |
+
$this->viewObj->title=__('Insert Subscription Form',WYSIJA);
|
30 |
+
|
31 |
+
$this->viewObj->registerAdd($this->getData());
|
32 |
+
exit;
|
33 |
+
}
|
34 |
+
|
35 |
+
function registerEdit(){
|
36 |
+
$this->viewObj->title=__('Insert Subscription Form',WYSIJA);
|
37 |
+
|
38 |
+
$this->viewObj->registerAdd($this->getData(),true);
|
39 |
+
exit;
|
40 |
+
}
|
41 |
+
|
42 |
+
|
43 |
+
function getData(){
|
44 |
+
$data_widget=array();
|
45 |
+
|
46 |
+
// if this parameter is passed that means we have an old widget let's import it and select
|
47 |
+
if(isset($_REQUEST['widget-data64'])){
|
48 |
+
$data_widget=unserialize(base64_decode($_REQUEST['widget-data64']));
|
49 |
+
$post=get_post($_REQUEST['post_id']);
|
50 |
+
|
51 |
+
// we need a title to identify the form
|
52 |
+
$data_widget['title'] = 'Form on '.$post->post_type.': '.$post->post_title;
|
53 |
+
|
54 |
+
$model_forms = WYSIJA::get('forms', 'model');
|
55 |
+
$model_forms->reset();
|
56 |
+
$form = $model_forms->getOne(false,array('name' => $data_widget['title']));
|
57 |
+
|
58 |
+
// this form doesn't exist yet in the new format so let's try to import it
|
59 |
+
if(empty($form)){
|
60 |
+
$helper_update=WYSIJA::get('update','helper');
|
61 |
+
|
62 |
+
$form_id = $helper_update->convert_widget_to_form($data_widget);
|
63 |
+
if($form_id!==false) {
|
64 |
+
$data_widget['default_form'] = $form_id;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
if(isset($_POST['widget-wysija'])){
|
70 |
+
$data_widget=array('widget_id'=>$_POST['widget_id'],'preview'=>true);
|
71 |
+
$custom_fields=array();
|
72 |
+
|
73 |
+
foreach($_POST['widget-wysija'] as $arra){
|
74 |
+
foreach($arra as $k => $v) {
|
75 |
+
switch($k){
|
76 |
+
case 'lists':
|
77 |
+
if(isset($data_widget[$k])) $data_widget[$k][]=$v[0];
|
78 |
+
else $data_widget[$k]=array($v[0]);
|
79 |
+
break;
|
80 |
+
case 'lists_name':
|
81 |
+
foreach($v as $kv=>$vv){
|
82 |
+
if(isset($data_widget[$k])) $data_widget[$k][$kv]=$vv;
|
83 |
+
else $data_widget[$k]=array($kv=>$vv);
|
84 |
+
}
|
85 |
+
|
86 |
+
break;
|
87 |
+
case 'customfields':
|
88 |
+
|
89 |
+
$found=false;
|
90 |
+
foreach($custom_fields as $keycol => $params){
|
91 |
+
if(isset($v[$keycol])){
|
92 |
+
$custom_fields[$keycol]= array_merge($custom_fields[$keycol],$v[$keycol]);
|
93 |
+
$found=true;
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
if(!$found) $custom_fields=array_merge($custom_fields,$v);
|
98 |
+
break;
|
99 |
+
|
100 |
+
default:
|
101 |
+
$data_widget[$k]=stripslashes($v);
|
102 |
+
}
|
103 |
+
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
+
|
108 |
+
$count=count($custom_fields);
|
109 |
+
if($count>1){
|
110 |
+
foreach($custom_fields as $keycol=>$paraval){
|
111 |
+
if($keycol!='email' && !isset($paraval['column_name'])) unset($custom_fields[$keycol]);
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
$count=count($custom_fields);
|
116 |
+
if($count>0){
|
117 |
+
if(!isset($custom_fields['email'])){
|
118 |
+
$custom_fields['email']['column_name']='email';
|
119 |
+
$custom_fields['email']['label']=__('Email',WYSIJA);
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
$count=count($custom_fields);
|
124 |
+
if($count==1 && isset($custom_fields['email'])){
|
125 |
+
|
126 |
+
$custom_fields=array();
|
127 |
+
}
|
128 |
+
|
129 |
+
if($custom_fields) $data_widget['customfields']=$custom_fields;
|
130 |
+
|
131 |
+
}
|
132 |
+
|
133 |
+
if(!isset($data_widget['customfields']) && isset($data_widget['labelswithin']) && $data_widget['labelswithin']=='labels_within'){
|
134 |
+
$data_widget['customfields']=array('email'=>array('label'=>__('Email',WYSIJA)));
|
135 |
+
}
|
136 |
+
|
137 |
+
return $data_widget;
|
138 |
+
}
|
139 |
+
|
140 |
}
|
controllers/back.php
CHANGED
@@ -544,7 +544,7 @@ class WYSIJA_control_back extends WYSIJA_control{
|
|
544 |
remove_action('admin_enqueue_scripts', 'wp_auth_check_load');
|
545 |
|
546 |
// add popup css
|
547 |
-
wp_enqueue_style('custom_popup_css', WYSIJA_URL.'css/adminPopup.css'
|
548 |
|
549 |
global $viewMedia;
|
550 |
$viewMedia=$this->viewObj;
|
544 |
remove_action('admin_enqueue_scripts', 'wp_auth_check_load');
|
545 |
|
546 |
// add popup css
|
547 |
+
wp_enqueue_style('custom_popup_css', WYSIJA_URL.'css/adminPopup.css');
|
548 |
|
549 |
global $viewMedia;
|
550 |
$viewMedia=$this->viewObj;
|
controllers/back/campaigns.php
CHANGED
@@ -5,2755 +5,2741 @@ defined('WYSIJA') or die('Restricted access');
|
|
5 |
|
6 |
class WYSIJA_control_back_campaigns extends WYSIJA_control_back {
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
|
1423 |
-
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
1487 |
-
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
-
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
-
|
1519 |
-
|
1520 |
-
|
1521 |
-
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
1528 |
-
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
-
|
1537 |
-
|
1538 |
-
|
1539 |
-
|
1540 |
-
|
1541 |
-
|
1542 |
-
|
1543 |
-
|
1544 |
-
|
1545 |
-
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
|
1562 |
-
|
1563 |
-
|
1564 |
-
|
1565 |
-
|
1566 |
-
|
1567 |
-
|
1568 |
-
|
1569 |
-
|
1570 |
-
|
1571 |
-
|
1572 |
-
|
1573 |
-
|
1574 |
-
|
1575 |
-
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
1581 |
-
|
1582 |
-
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
1592 |
-
|
1593 |
-
|
1594 |
-
|
1595 |
-
|
1596 |
-
|
1597 |
-
|
1598 |
-
|
1599 |
-
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
|
1613 |
-
|
1614 |
-
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
1620 |
-
|
1621 |
-
|
1622 |
-
|
1623 |
-
|
1624 |
-
|
1625 |
-
|
1626 |
-
|
1627 |
-
|
1628 |
-
|
1629 |
-
|
1630 |
-
|
1631 |
-
|
1632 |
-
|
1633 |
-
|
1634 |
-
|
1635 |
-
|
1636 |
-
|
1637 |
-
|
1638 |
-
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
1642 |
-
|
1643 |
-
|
1644 |
-
|
1645 |
-
|
1646 |
-
|
1647 |
-
|
1648 |
-
|
1649 |
-
|
1650 |
-
|
1651 |
-
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
|
1657 |
-
|
1658 |
-
|
1659 |
-
|
1660 |
-
|
1661 |
-
|
1662 |
-
|
1663 |
-
|
1664 |
-
|
1665 |
-
|
1666 |
-
|
1667 |
-
|
1668 |
-
|
1669 |
-
|
1670 |
-
|
1671 |
-
|
1672 |
-
|
1673 |
-
|
1674 |
-
|
1675 |
-
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
|
1680 |
-
|
1681 |
-
|
1682 |
-
|
1683 |
-
|
1684 |
-
|
1685 |
-
|
1686 |
-
|
1687 |
-
|
1688 |
-
|
1689 |
-
|
1690 |
-
|
1691 |
-
|
1692 |
-
|
1693 |
-
|
1694 |
-
|
1695 |
-
|
1696 |
-
|
1697 |
-
|
1698 |
-
|
1699 |
-
|
1700 |
-
|
1701 |
-
|
1702 |
-
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
1719 |
-
|
1720 |
-
|
1721 |
-
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
1730 |
-
|
1731 |
-
|
1732 |
-
|
1733 |
-
|
1734 |
-
|
1735 |
-
|
1736 |
-
|
1737 |
-
|
1738 |
-
|
1739 |
-
|
1740 |
-
|
1741 |
-
|
1742 |
-
|
1743 |
-
|
1744 |
-
|
1745 |
-
|
1746 |
-
|
1747 |
-
|
1748 |
-
|
1749 |
-
|
1750 |
-
|
1751 |
-
|
1752 |
-
|
1753 |
-
|
1754 |
-
|
1755 |
-
|
1756 |
-
|
1757 |
-
|
1758 |
-
|
1759 |
-
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
1763 |
-
|
1764 |
-
|
1765 |
-
|
1766 |
-
|
1767 |
-
|
1768 |
-
|
1769 |
-
|
1770 |
-
|
1771 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
|
1775 |
-
|
1776 |
-
|
1777 |
-
|
1778 |
-
|
1779 |
-
|
1780 |
-
|
1781 |
-
|
1782 |
-
|
1783 |
-
|
1784 |
-
|
1785 |
-
|
1786 |
-
|
1787 |
-
|
1788 |
-
|
1789 |
-
|
1790 |
-
|
1791 |
-
|
1792 |
-
|
1793 |
-
|
1794 |
-
|
1795 |
-
|
1796 |
-
|
1797 |
-
|
1798 |
-
|
1799 |
-
|
1800 |
-
|
1801 |
-
|
1802 |
-
|
1803 |
-
|
1804 |
-
|
1805 |
-
|
1806 |
-
|
1807 |
-
|
1808 |
-
|
1809 |
-
|
1810 |
-
|
1811 |
-
|
1812 |
-
|
1813 |
-
|
1814 |
-
|
1815 |
-
|
1816 |
-
|
1817 |
-
|
1818 |
-
|
1819 |
-
|
1820 |
-
|
1821 |
-
|
1822 |
-
|
1823 |
-
|
1824 |
-
|
1825 |
-
|
1826 |
-
|
1827 |
-
|
1828 |
-
|
1829 |
-
|
1830 |
-
|
1831 |
-
|
1832 |
-
|
1833 |
-
|
1834 |
-
|
1835 |
-
|
1836 |
-
|
1837 |
-
|
1838 |
-
|
1839 |
-
|
1840 |
-
|
1841 |
-
|
1842 |
-
|
1843 |
-
|
1844 |
-
|
1845 |
-
|
1846 |
-
|
1847 |
-
|
1848 |
-
|
1849 |
-
|
1850 |
-
|
1851 |
-
|
1852 |
-
|
1853 |
-
|
1854 |
-
|
1855 |
-
|
1856 |
-
|
1857 |
-
|
1858 |
-
|
1859 |
-
|
1860 |
-
|
1861 |
-
|
1862 |
-
|
1863 |
-
|
1864 |
-
|
1865 |
-
|
1866 |
-
|
1867 |
-
|
1868 |
-
|
1869 |
-
|
1870 |
-
|
1871 |
-
|
1872 |
-
|
1873 |
-
|
1874 |
-
|
1875 |
-
|
1876 |
-
|
1877 |
-
|
1878 |
-
|
1879 |
-
|
1880 |
-
|
1881 |
-
|
1882 |
-
|
1883 |
-
|
1884 |
-
|
1885 |
-
|
1886 |
-
|
1887 |
-
|
1888 |
-
|
1889 |
-
|
1890 |
-
|
1891 |
-
|
1892 |
-
|
1893 |
-
|
1894 |
-
|
1895 |
-
|
1896 |
-
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
|
1912 |
-
|
1913 |
-
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
|
1920 |
-
|
1921 |
-
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
|
1928 |
-
|
1929 |
-
|
1930 |
-
|
1931 |
-
|
1932 |
-
|
1933 |
-
|
1934 |
-
|
1935 |
-
|
1936 |
-
|
1937 |
-
|
1938 |
-
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
-
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
1955 |
-
|
1956 |
-
|
1957 |
-
|
1958 |
-
|
1959 |
-
|
1960 |
-
|
1961 |
-
|
1962 |
-
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
|
1967 |
-
|
1968 |
-
|
1969 |
-
|
1970 |
-
|
1971 |
-
|
1972 |
-
|
1973 |
-
|
1974 |
-
|
1975 |
-
|
1976 |
-
|
1977 |
-
|
1978 |
-
|
1979 |
-
|
1980 |
-
|
1981 |
-
|
1982 |
-
|
1983 |
-
|
1984 |
-
|
1985 |
-
|
1986 |
-
|
1987 |
-
|
1988 |
-
|
1989 |
-
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
1994 |
-
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
-
|
2000 |
-
|
2001 |
-
|
2002 |
-
|
2003 |
-
|
2004 |
-
|
2005 |
-
|
2006 |
-
|
2007 |
-
|
2008 |
-
|
2009 |
-
|
2010 |
-
|
2011 |
-
|
2012 |
-
|
2013 |
-
|
2014 |
-
|
2015 |
-
|
2016 |
-
|
2017 |
-
|
2018 |
-
|
2019 |
-
|
2020 |
-
|
2021 |
-
|
2022 |
-
|
2023 |
-
|
2024 |
-
|
2025 |
-
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
|
2030 |
-
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
|
2041 |
-
|
2042 |
-
|
2043 |
-
|
2044 |
-
|
2045 |
-
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
2049 |
-
|
2050 |
-
|
2051 |
-
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
|
2057 |
-
|
2058 |
-
|
2059 |
-
|
2060 |
-
|
2061 |
-
|
2062 |
-
|
2063 |
-
|
2064 |
-
|
2065 |
-
|
2066 |
-
|
2067 |
-
|
2068 |
-
|
2069 |
-
|
2070 |
-
|
2071 |
-
|
2072 |
-
|
2073 |
-
|
2074 |
-
|
2075 |
-
|
2076 |
-
|
2077 |
-
|
2078 |
-
|
2079 |
-
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
|
2085 |
-
|
2086 |
-
|
2087 |
-
|
2088 |
-
|
2089 |
-
|
2090 |
-
|
2091 |
-
|
2092 |
-
|
2093 |
-
|
2094 |
-
|
2095 |
-
|
2096 |
-
|
2097 |
-
|
2098 |
-
|
2099 |
-
|
2100 |
-
|
2101 |
-
|
2102 |
-
|
2103 |
-
|
2104 |
-
|
2105 |
-
|
2106 |
-
|
2107 |
-
|
2108 |
-
|
2109 |
-
|
2110 |
-
|
2111 |
-
|
2112 |
-
|
2113 |
-
|
2114 |
-
|
2115 |
-
|
2116 |
-
|
2117 |
-
|
2118 |
-
|
2119 |
-
|
2120 |
-
|
2121 |
-
|
2122 |
-
|
2123 |
-
|
2124 |
-
|
2125 |
-
|
2126 |
-
|
2127 |
-
|
2128 |
-
|
2129 |
-
|
2130 |
-
|
2131 |
-
|
2132 |
-
|
2133 |
-
|
2134 |
-
|
2135 |
-
|
2136 |
-
|
2137 |
-
|
2138 |
-
|
2139 |
-
|
2140 |
-
|
2141 |
-
|
2142 |
-
|
2143 |
-
|
2144 |
-
|
2145 |
-
|
2146 |
-
|
2147 |
-
|
2148 |
-
|
2149 |
-
|
2150 |
-
|
2151 |
-
|
2152 |
-
|
2153 |
-
|
2154 |
-
|
2155 |
-
|
2156 |
-
|
2157 |
-
|
2158 |
-
|
2159 |
-
|
2160 |
-
|
2161 |
-
$this->notice(sprintf(__('A new list "%1$s" has been created out of this segment.', WYSIJA), $listname));
|
2162 |
-
$this->redirect('admin.php?page=wysija_campaigns&action=viewstats&id=' . $_REQUEST['id']);
|
2163 |
-
}
|
2164 |
-
|
2165 |
-
function unsubscribeall() {
|
2166 |
-
// Update user_list, set unsubdate and sub_date
|
2167 |
-
$query = $this->getListSubscriberQry('B.user_id');
|
2168 |
$query1 = "
|
2169 |
-
|
2170 |
-
|
2171 |
`unsub_date` = ".time().",
|
2172 |
`sub_date` = 0
|
2173 |
-
|
2174 |
`user_id` IN ($query)
|
2175 |
AND `list_id` NOT IN (SELECT `list_id` FROM `[wysija]list` WHERE `is_enabled` < 1)
|
2176 |
";
|
2177 |
-
|
2178 |
-
|
2179 |
-
|
2180 |
-
|
2181 |
-
|
2182 |
-
|
2183 |
-
|
2184 |
-
|
2185 |
-
|
2186 |
-
|
2187 |
-
|
2188 |
-
|
2189 |
-
|
2190 |
-
|
2191 |
-
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
-
|
2196 |
-
|
2197 |
-
|
2198 |
-
|
2199 |
-
|
2200 |
-
|
2201 |
-
|
2202 |
-
|
2203 |
-
|
2204 |
-
|
2205 |
-
|
2206 |
-
|
2207 |
-
|
2208 |
-
|
2209 |
-
|
2210 |
-
|
2211 |
-
|
2212 |
-
|
2213 |
-
|
2214 |
-
|
2215 |
-
|
2216 |
-
|
2217 |
-
|
2218 |
-
|
2219 |
-
|
2220 |
-
|
2221 |
-
|
2222 |
-
|
2223 |
-
|
2224 |
-
|
2225 |
-
|
2226 |
-
|
2227 |
-
|
2228 |
-
|
2229 |
-
|
2230 |
-
|
2231 |
-
|
2232 |
-
|
2233 |
-
|
2234 |
-
|
2235 |
-
|
2236 |
-
|
2237 |
-
|
2238 |
-
|
2239 |
-
|
2240 |
-
|
2241 |
-
|
2242 |
-
|
2243 |
-
|
2244 |
-
|
2245 |
-
|
2246 |
-
|
2247 |
-
|
2248 |
-
|
2249 |
-
|
2250 |
-
|
2251 |
-
|
2252 |
-
|
2253 |
-
|
2254 |
-
|
2255 |
-
|
2256 |
-
|
2257 |
-
|
2258 |
-
|
2259 |
-
|
2260 |
-
|
2261 |
-
|
2262 |
-
|
2263 |
-
|
2264 |
-
|
2265 |
-
|
2266 |
-
|
2267 |
-
|
2268 |
-
|
2269 |
-
|
2270 |
-
|
2271 |
-
|
2272 |
-
|
2273 |
-
|
2274 |
-
|
2275 |
-
|
2276 |
-
|
2277 |
-
|
2278 |
-
|
2279 |
-
|
2280 |
-
|
2281 |
-
|
2282 |
-
|
2283 |
-
|
2284 |
-
|
2285 |
-
|
2286 |
-
|
2287 |
-
|
2288 |
-
|
2289 |
-
|
2290 |
-
|
2291 |
-
|
2292 |
-
|
2293 |
-
|
2294 |
-
|
2295 |
-
|
2296 |
-
|
2297 |
-
|
2298 |
-
|
2299 |
-
|
2300 |
-
|
2301 |
-
|
2302 |
-
|
2303 |
-
|
2304 |
-
|
2305 |
-
|
2306 |
-
|
2307 |
-
|
2308 |
-
|
2309 |
-
|
2310 |
-
|
2311 |
-
|
2312 |
-
|
2313 |
-
|
2314 |
-
|
2315 |
-
|
2316 |
-
|
2317 |
-
|
2318 |
-
|
2319 |
-
|
2320 |
-
|
2321 |
-
|
2322 |
-
|
2323 |
-
|
2324 |
-
|
2325 |
-
|
2326 |
-
|
2327 |
-
|
2328 |
-
|
2329 |
-
|
2330 |
-
|
2331 |
-
|
2332 |
-
|
2333 |
-
|
2334 |
-
|
2335 |
-
|
2336 |
-
|
2337 |
-
|
2338 |
-
|
2339 |
-
|
2340 |
-
|
2341 |
-
|
2342 |
-
|
2343 |
-
|
2344 |
-
|
2345 |
-
|
2346 |
-
|
2347 |
-
|
2348 |
-
|
2349 |
-
|
2350 |
-
|
2351 |
-
|
2352 |
-
|
2353 |
-
|
2354 |
-
|
2355 |
-
|
2356 |
-
|
2357 |
-
|
2358 |
-
|
2359 |
-
|
2360 |
-
|
2361 |
-
|
2362 |
-
|
2363 |
-
|
2364 |
-
|
2365 |
-
|
2366 |
-
|
2367 |
-
|
2368 |
-
|
2369 |
-
|
2370 |
-
|
2371 |
-
|
2372 |
-
|
2373 |
-
|
2374 |
-
|
2375 |
-
|
2376 |
-
|
2377 |
-
|
2378 |
-
|
2379 |
-
|
2380 |
-
|
2381 |
-
|
2382 |
-
|
2383 |
-
|
2384 |
-
|
2385 |
-
|
2386 |
-
|
2387 |
-
|
2388 |
-
|
2389 |
-
|
2390 |
-
|
2391 |
-
|
2392 |
-
|
2393 |
-
|
2394 |
-
|
2395 |
-
|
2396 |
-
|
2397 |
-
|
2398 |
-
|
2399 |
-
|
2400 |
-
|
2401 |
-
|
2402 |
-
|
2403 |
-
|
2404 |
-
|
2405 |
-
|
2406 |
-
|
2407 |
-
|
2408 |
-
|
2409 |
-
|
2410 |
-
|
2411 |
-
|
2412 |
-
|
2413 |
-
|
2414 |
-
|
2415 |
-
|
2416 |
-
|
2417 |
-
|
2418 |
-
|
2419 |
-
|
2420 |
-
|
2421 |
-
|
2422 |
-
|
2423 |
-
|
2424 |
-
|
2425 |
-
|
2426 |
-
|
2427 |
-
|
2428 |
-
|
2429 |
-
|
2430 |
-
|
2431 |
-
|
2432 |
-
|
2433 |
-
|
2434 |
-
|
2435 |
-
|
2436 |
-
|
2437 |
-
|
2438 |
-
|
2439 |
-
|
2440 |
-
|
2441 |
-
|
2442 |
-
|
2443 |
-
|
2444 |
-
|
2445 |
-
|
2446 |
-
|
2447 |
-
|
2448 |
-
|
2449 |
-
|
2450 |
-
|
2451 |
-
|
2452 |
-
|
2453 |
-
|
2454 |
-
|
2455 |
-
|
2456 |
-
|
2457 |
-
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
2462 |
-
|
2463 |
-
|
2464 |
-
|
2465 |
-
|
2466 |
-
|
2467 |
-
|
2468 |
-
|
2469 |
-
|
2470 |
-
|
2471 |
-
|
2472 |
-
|
2473 |
-
|
2474 |
-
|
2475 |
-
|
2476 |
-
|
2477 |
-
|
2478 |
-
|
2479 |
-
|
2480 |
-
|
2481 |
-
|
2482 |
-
|
2483 |
-
|
2484 |
-
|
2485 |
-
|
2486 |
-
|
2487 |
-
|
2488 |
-
|
2489 |
-
|
2490 |
-
|
2491 |
-
|
2492 |
-
|
2493 |
-
|
2494 |
-
|
2495 |
-
|
2496 |
-
|
2497 |
-
|
2498 |
-
|
2499 |
-
|
2500 |
-
|
2501 |
-
|
2502 |
-
|
2503 |
-
|
2504 |
-
|
2505 |
-
|
2506 |
-
|
2507 |
-
|
2508 |
-
|
2509 |
-
|
2510 |
-
|
2511 |
-
|
2512 |
-
|
2513 |
-
|
2514 |
-
|
2515 |
-
|
2516 |
-
|
2517 |
-
|
2518 |
-
|
2519 |
-
|
2520 |
-
|
2521 |
-
|
2522 |
-
|
2523 |
-
|
2524 |
-
|
2525 |
-
|
2526 |
-
|
2527 |
-
|
2528 |
-
|
2529 |
-
|
2530 |
-
|
2531 |
-
|
2532 |
-
|
2533 |
-
|
2534 |
-
|
2535 |
-
|
2536 |
-
|
2537 |
-
|
2538 |
-
|
2539 |
-
|
2540 |
-
|
2541 |
-
|
2542 |
-
|
2543 |
-
|
2544 |
-
|
2545 |
-
|
2546 |
-
|
2547 |
-
|
2548 |
-
|
2549 |
-
|
2550 |
-
|
2551 |
-
|
2552 |
-
|
2553 |
-
|
2554 |
-
|
2555 |
-
|
2556 |
-
|
2557 |
-
|
2558 |
-
|
2559 |
-
|
2560 |
-
|
2561 |
-
|
2562 |
-
|
2563 |
-
|
2564 |
-
|
2565 |
-
|
2566 |
-
|
2567 |
-
|
2568 |
-
|
2569 |
-
|
2570 |
-
|
2571 |
-
|
2572 |
-
|
2573 |
-
|
2574 |
-
|
2575 |
-
|
2576 |
-
|
2577 |
-
|
2578 |
-
|
2579 |
-
|
2580 |
-
|
2581 |
-
|
2582 |
-
|
2583 |
-
|
2584 |
-
|
2585 |
-
|
2586 |
-
|
2587 |
-
|
2588 |
-
|
2589 |
-
|
2590 |
-
|
2591 |
-
|
2592 |
-
|
2593 |
-
|
2594 |
-
|
2595 |
-
|
2596 |
-
|
2597 |
-
|
2598 |
-
|
2599 |
-
|
2600 |
-
|
2601 |
-
|
2602 |
-
|
2603 |
-
|
2604 |
-
|
2605 |
-
|
2606 |
-
|
2607 |
-
|
2608 |
-
|
2609 |
-
|
2610 |
-
|
2611 |
-
|
2612 |
-
|
2613 |
-
|
2614 |
-
|
2615 |
-
|
2616 |
-
|
2617 |
-
|
2618 |
-
|
2619 |
-
|
2620 |
-
|
2621 |
-
|
2622 |
-
|
2623 |
-
|
2624 |
-
|
2625 |
-
|
2626 |
-
|
2627 |
-
|
2628 |
-
|
2629 |
-
|
2630 |
-
|
2631 |
-
|
2632 |
-
|
2633 |
-
|
2634 |
-
|
2635 |
-
|
2636 |
-
|
2637 |
-
|
2638 |
-
|
2639 |
-
|
2640 |
-
|
2641 |
-
|
2642 |
-
|
2643 |
-
|
2644 |
-
|
2645 |
-
|
2646 |
-
|
2647 |
-
|
2648 |
-
|
2649 |
-
|
2650 |
-
|
2651 |
-
|
2652 |
-
|
2653 |
-
|
2654 |
-
|
2655 |
-
|
2656 |
-
|
2657 |
-
|
2658 |
-
|
2659 |
-
|
2660 |
-
|
2661 |
-
|
2662 |
-
|
2663 |
-
|
2664 |
-
|
2665 |
-
|
2666 |
-
|
2667 |
-
|
2668 |
-
|
2669 |
-
|
2670 |
-
|
2671 |
-
|
2672 |
-
|
2673 |
-
|
2674 |
-
|
2675 |
-
|
2676 |
-
|
2677 |
-
|
2678 |
-
|
2679 |
-
|
2680 |
-
|
2681 |
-
|
2682 |
-
|
2683 |
-
|
2684 |
-
|
2685 |
-
|
2686 |
-
|
2687 |
-
|
2688 |
-
|
2689 |
-
|
2690 |
-
|
2691 |
-
|
2692 |
-
|
2693 |
-
|
2694 |
-
|
2695 |
-
|
2696 |
-
|
2697 |
-
|
2698 |
-
|
2699 |
-
|
2700 |
-
|
2701 |
-
|
2702 |
-
|
2703 |
-
|
2704 |
-
|
2705 |
-
|
2706 |
-
|
2707 |
-
|
2708 |
-
|
2709 |
-
|
2710 |
-
|
2711 |
-
|
2712 |
-
|
2713 |
-
|
2714 |
-
|
2715 |
-
|
2716 |
-
|
2717 |
-
|
2718 |
-
|
2719 |
-
|
2720 |
-
|
2721 |
-
|
2722 |
-
|
2723 |
-
|
2724 |
-
|
2725 |
-
|
2726 |
-
|
2727 |
-
|
2728 |
-
|
2729 |
-
|
2730 |
-
|
2731 |
-
|
2732 |
-
|
2733 |
-
|
2734 |
-
|
2735 |
-
|
2736 |
-
|
2737 |
-
|
2738 |
-
|
2739 |
-
|
2740 |
-
|
2741 |
-
|
2742 |
-
|
2743 |
-
|
2744 |
-
|
2745 |
-
|
2746 |
-
|
2747 |
-
|
2748 |
-
|
2749 |
-
|
2750 |
-
|
2751 |
-
|
2752 |
-
$this->error(__("The newsletter doesn't exist.", WYSIJA), 1);
|
2753 |
-
$this->redirect('admin.php?page=wysija_campaigns');
|
2754 |
-
}
|
2755 |
-
else
|
2756 |
-
return true;
|
2757 |
-
}
|
2758 |
|
2759 |
}
|
5 |
|
6 |
class WYSIJA_control_back_campaigns extends WYSIJA_control_back {
|
7 |
|
8 |
+
var $model = 'campaign';
|
9 |
+
var $view = 'campaigns';
|
10 |
+
var $list_columns = array('campaign_id', 'name', 'description');
|
11 |
+
var $searchable = array('name', 'subject');
|
12 |
+
var $filters = array();
|
13 |
+
var $base_url = 'admin.php';
|
14 |
+
|
15 |
+
function WYSIJA_control_back_campaigns() {
|
16 |
+
|
17 |
+
}
|
18 |
+
|
19 |
+
function installation(){
|
20 |
+
|
21 |
+
$start_time = time();
|
22 |
+
$check_max_execution_time = get_option( 'mpoet_check_max_execution_time' );
|
23 |
+
$ini_max_execution_time = ini_get( 'max_execution_time' );
|
24 |
+
|
25 |
+
// 1 - we haven't run the max execution time extension test yet, let's do it
|
26 |
+
// this test should be run in the background, it may take more than 5 minutes to validate
|
27 |
+
if( empty( $check_max_execution_time ) ){
|
28 |
+
|
29 |
+
// we set the max_execution_time to infinite
|
30 |
+
@ini_set( 'max_execution_time' , 0 );
|
31 |
+
// we keep running the script even if the user abort his request
|
32 |
+
@ignore_user_abort( true );
|
33 |
+
|
34 |
+
$reset_max_execution_time = ini_get( 'max_execution_time' );
|
35 |
+
|
36 |
+
// FAILURE some servers the "max execution time" returned is Array we make sure our value is numeric
|
37 |
+
if( !is_numeric( $ini_max_execution_time ) ){
|
38 |
+
WYSIJA::update_option( 'mpoet_check_max_execution_time' , $ini_max_execution_time-1 );
|
39 |
+
return;
|
40 |
+
}
|
41 |
+
|
42 |
+
// FAILURE this server doesn't allow us to set the max_execution_time
|
43 |
+
if( $reset_max_execution_time == $ini_max_execution_time ){
|
44 |
+
WYSIJA::update_option( 'mpoet_check_max_execution_time' , $ini_max_execution_time-1 );
|
45 |
+
return;
|
46 |
+
}
|
47 |
+
|
48 |
+
// we set a FAILURE value to our flag so we know if the process crash while executing
|
49 |
+
WYSIJA::update_option( 'mpoet_check_max_execution_time' , $ini_max_execution_time );
|
50 |
+
|
51 |
+
// the common default timeout value is 300, so if by default the timelimit is 0 (which might have been set by another application)
|
52 |
+
// we default it to 300 known as a common default value and we run the extension test
|
53 |
+
if( $ini_max_execution_time == 0 ) $ini_max_execution_time = 300;
|
54 |
+
|
55 |
+
// we run asleep script during the initial max execution time to a larger value
|
56 |
+
$total_time_to_run_script = $ini_max_execution_time + 20;
|
57 |
+
$sleeping_intervals = 5;
|
58 |
+
$duration_so_far = 0;
|
59 |
+
|
60 |
+
// we sleep until the extended total timeout value is reached or it breaks before but we have the value we need
|
61 |
+
while($total_time_to_run_script >0){
|
62 |
+
$total_time_to_run_script = $total_time_to_run_script - $sleeping_intervals;
|
63 |
+
sleep( $sleeping_intervals );
|
64 |
+
|
65 |
+
$duration_so_far = time() - $start_time;
|
66 |
+
WYSIJA::update_option( 'mpoet_check_max_execution_time' , $duration_so_far );
|
67 |
+
}
|
68 |
+
|
69 |
+
// SUCCESS the scripts didn't die we set our flag in the db so that we know the test is a success
|
70 |
+
WYSIJA::update_option( 'mpoet_check_max_execution_time' , $duration_so_far );
|
71 |
+
|
72 |
+
}else{
|
73 |
+
// 2 - the max execution time extension test has been run, this is the results we get
|
74 |
+
if( $check_max_execution_time > $ini_max_execution_time ){
|
75 |
+
echo 'max_execution_time('.$ini_max_execution_time.') can be extended('.$check_max_execution_time.')';
|
76 |
+
}else{
|
77 |
+
echo 'max_execution_time('.$ini_max_execution_time.') cannot be extended( max value : '.$check_max_execution_time.')';
|
78 |
+
}
|
79 |
+
}
|
80 |
+
exit;
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Welcome page first time install
|
85 |
+
* @return boolean
|
86 |
+
*/
|
87 |
+
function welcome_new() {
|
88 |
+
$this->title = $this->viewObj->title = __('Welcome Page!', WYSIJA);
|
89 |
+
$this->jsTrans['instalwjp'] = __('Installing MailPoet Newsletter Premium plugin', WYSIJA);
|
90 |
+
$helper_readme = WYSIJA::get('readme', 'helper');
|
91 |
+
$helper_readme->scan();
|
92 |
+
$this->data = array();
|
93 |
+
$this->data['abouttext'] = __('A Brand New MailPoet. Let the Fun Begin.', WYSIJA);
|
94 |
+
|
95 |
+
$model_config = WYSIJA::get('config', 'model');
|
96 |
+
$is_multisite = is_multisite();
|
97 |
+
$is_network_admin = WYSIJA::current_user_can('manage_network');
|
98 |
+
if ($is_multisite && $is_network_admin) {
|
99 |
+
$model_config->save(array('ms_wysija_whats_new' => WYSIJA::get_version()));
|
100 |
+
} else {
|
101 |
+
$model_config->save(array('wysija_whats_new' => WYSIJA::get_version()));
|
102 |
+
}
|
103 |
+
|
104 |
+
//add a new language code with a new video
|
105 |
+
$video_language=array();
|
106 |
+
//$video_language['en_EN'] = '<iframe width="853" height="480" src="http://www.youtube.com/embed/pYzaHDTg5Jk" frameborder="0" allowfullscreen></iframe>';
|
107 |
+
$video_language['en_EN'] = '<iframe src="//player.vimeo.com/video/81479899" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
|
108 |
+
//$video_language['fr_FR'] = '<iframe width="853" height="480" src="http://www.youtube.com/embed/W5EyW5w7aWQ" frameborder="0" allowfullscreen></iframe>';
|
109 |
+
// $video_language['sv_SE']='<iframe width="853" height="480" src="http://www.youtube.com/embed/O8_t_dekx74" frameborder="0" allowfullscreen></iframe>';
|
110 |
+
//$video_language['ar']='<iframe width="853" height="480" src="http://www.youtube.com/embed/cyDHlX_qgOo" frameborder="0" allowfullscreen></iframe>';
|
111 |
+
|
112 |
+
$wp_lang = get_locale();
|
113 |
+
if (!empty($wp_lang) && isset($video_language[$wp_lang])) {
|
114 |
+
$welcome_video_link = $video_language[$wp_lang];
|
115 |
+
} else {
|
116 |
+
$welcome_video_link = $video_language['en_EN'];
|
117 |
+
}
|
118 |
+
|
119 |
+
$this->data['sections'][] = array(
|
120 |
+
'title' => __('Hey, we\'re curious! How did you find out about us?', WYSIJA) . '<span id="poll_result"></span>',
|
121 |
+
'format' => 'normal',
|
122 |
+
'paragraphs' => array(
|
123 |
+
'<ul class="welcome_poll">
|
124 |
+
<li>
|
125 |
+
<input type="radio" id="how_did_you_find_us_1" value="repository" name="how_did_you_find_us">
|
126 |
+
<label value="lab1" for="how_did_you_find_us_1">' . __('WordPress.org plugin repository', WYSIJA) . '</label>
|
127 |
+
</li>
|
128 |
+
<li>
|
129 |
+
<input type="radio" id="how_did_you_find_us_2" value="search_engine" name="how_did_you_find_us">
|
130 |
+
<label value="lab2" for="how_did_you_find_us_2">' . __('Google or other search engine', WYSIJA) . '</label>
|
131 |
+
</li>
|
132 |
+
<li>
|
133 |
+
<input type="radio" id="how_did_you_find_us_3" value="friend" name="how_did_you_find_us">
|
134 |
+
<label value="lab3" for="how_did_you_find_us_3">' . __('Friend recommendation', WYSIJA) . '</label>
|
135 |
+
</li>
|
136 |
+
<li>
|
137 |
+
<input type="radio" id="how_did_you_find_us_4" value="url" name="how_did_you_find_us">
|
138 |
+
<label value="lab4" for="how_did_you_find_us_4">' . __('Blog post, online review, forum:', WYSIJA) . '</label>
|
139 |
+
<input type="text" id="how_did_you_find_us_4_url" name="how_did_you_find_us_url" placeholder="' . __('Please enter the address where you\'ve found out about us', WYSIJA) . '">
|
140 |
+
</li>
|
141 |
+
</ul>'
|
142 |
+
)
|
143 |
+
);
|
144 |
+
|
145 |
+
$this->data['sections'][]=array(
|
146 |
+
'title'=>__('First Time? See it in Action',WYSIJA),
|
147 |
+
'format'=>'normal',
|
148 |
+
'paragraphs'=>array(
|
149 |
+
__('You can start by watching this video by one of our users.',WYSIJA),
|
150 |
+
$welcome_video_link
|
151 |
+
)
|
152 |
+
);
|
153 |
+
|
154 |
+
// Check if user is already sharing data, and hide the share link.
|
155 |
+
if (!$model_config->getValue('analytics')) {
|
156 |
+
$share_section = array(
|
157 |
+
'title' => __('Share your data', WYSIJA),
|
158 |
+
'content' => str_replace(
|
159 |
+
array('[link]', '[/link]', '[ajaxlink]', '[/ajaxlink]'), array('<a title="Anonymous Data" target="_blank" href="http://support.mailpoet.com/knowledgebase/share-your-data/?utm_source=wpadmin&utm_campaign=welcome_page">', '</a>', '<a id="share_analytics" href="javascript:;">', '</a>'), __("We know too little about our users. We're looking for [link]anonymous data[/link] to build a better plugin. [ajaxlink]Yes, count me in![/ajaxlink]", WYSIJA))
|
160 |
+
);
|
161 |
+
} else {
|
162 |
+
$share_section = array(
|
163 |
+
'title' => __('Share your data', WYSIJA),
|
164 |
+
'content' => str_replace(
|
165 |
+
array('[link]', '[/link]'), array('<a title="Anonymous Data" target="_blank" href="http://support.mailpoet.com/knowledgebase/share-your-data/?utm_source=wpadmin&utm_campaign=welcome_page">', '</a>', '<a id="share_analytics" href="javascript:;">', '</a>'), __("We know too little about our users. We're looking for [link]anonymous data[/link] to build a better plugin. Thanks, you're already sharing!", WYSIJA))
|
166 |
+
);
|
167 |
+
}
|
168 |
+
|
169 |
+
$this->data['sections'][] = array(
|
170 |
+
'title' => __('What You Can Do', WYSIJA),
|
171 |
+
'cols' => array(
|
172 |
+
array(
|
173 |
+
'title' => __('5 minute newbie guide', WYSIJA),
|
174 |
+
'content' => __('Your MailPoet comes with an example newsletter. You\'ll see it when you close this welcome page. Edit it to start playing with it.', WYSIJA)
|
175 |
+
),
|
176 |
+
$share_section,
|
177 |
+
array(
|
178 |
+
'title' => __('Help yourself. Or let us help you.', WYSIJA),
|
179 |
+
'content' => str_replace(
|
180 |
+
array('[link]', '[/link]'), array('<a href="http://support.mailpoet.com/" target="_blank" title="On our blog!">', '</a>'), __('We got documentation and a ticket system on [link]support.mailpoet.com[/link]. We answer within 24h.', WYSIJA))
|
181 |
+
)
|
182 |
+
),
|
183 |
+
'format' => 'three-col',
|
184 |
+
);
|
185 |
+
|
186 |
+
$this->viewObj->skip_header = true;
|
187 |
+
|
188 |
+
return true;
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Welcome page for updaters
|
193 |
+
* @return boolean
|
194 |
+
*/
|
195 |
+
function whats_new() {
|
196 |
+
|
197 |
+
$this->title = $this->viewObj->title = __('What\'s new?', WYSIJA);
|
198 |
+
$this->jsTrans['instalwjp'] = __('Installing MailPoet Newsletter Premium plugin', WYSIJA);
|
199 |
+
wp_enqueue_style('wysija-admin-css-premium', WYSIJA_URL.'css/admin-premium.css',array(),WYSIJA::get_version());
|
200 |
+
|
201 |
+
$this->viewObj->skip_header = true;
|
202 |
+
return true;
|
203 |
+
}
|
204 |
+
|
205 |
+
|
206 |
+
|
207 |
+
/* START prem check hook */
|
208 |
+
|
209 |
+
// when curl or any php remote function not available mailpoet.com returns lcheck to that function
|
210 |
+
function licok() {
|
211 |
+
parent::WYSIJA_control_back();
|
212 |
+
$dt = get_option('wysijey');
|
213 |
+
|
214 |
+
if (isset($_REQUEST['xtz']) && $dt === $_REQUEST['xtz']) {
|
215 |
+
$dataconf = array('premium_key' => base64_encode(get_option('home') . time()), 'premium_val' => time());
|
216 |
+
$this->notice(__('Premium version is valid for your site.', WYSIJA));
|
217 |
+
} else {
|
218 |
+
$dataconf = array('premium_key' => '', 'premium_val' => '');
|
219 |
+
|
220 |
+
$helper_licence = WYSIJA::get('licence', 'helper');
|
221 |
+
$url_premium = 'http://www.mailpoet.com/checkout/?wysijadomain=' . $dt . '&nc=1&utm_source=wpadmin&utm_campaign=error_licence_activation';
|
222 |
+
|
223 |
+
$this->error(str_replace(array('[link]', '[/link]'), array('<a href="' . $url_premium . '" target="_blank">', '</a>'), __('Premium licence does not exist for your site. Purchase it [link]here[/link].', WYSIJA)), 1);
|
224 |
+
}
|
225 |
+
WYSIJA::update_option('wysicheck', false);
|
226 |
+
$modelConf = WYSIJA::get('config', 'model');
|
227 |
+
$modelConf->save($dataconf);
|
228 |
+
|
229 |
+
$this->redirect('admin.php?page=wysija_config#tab-premium');
|
230 |
+
}
|
231 |
+
|
232 |
+
/* END prem check hook */
|
233 |
+
|
234 |
+
function validateLic() {
|
235 |
+
$helpLic = WYSIJA::get('licence', 'helper');
|
236 |
+
$res = $helpLic->check();
|
237 |
+
|
238 |
+
$this->redirect();
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* this function is triggered when sending manually the emails with the "Don't wait and send right now" button
|
243 |
+
* @param type $dataPost
|
244 |
+
*/
|
245 |
+
function manual_send($dataPost = false) {
|
246 |
+
$modelQ = WYSIJA::get('queue', 'model');
|
247 |
+
$config = WYSIJA::get('config', 'model');
|
248 |
+
if ((int) $config->getValue('total_subscribers') < 2000) {
|
249 |
+
if ($modelQ->count() > 0) {
|
250 |
+
$helperQ = WYSIJA::get('queue', 'helper');
|
251 |
+
$emailid = false;
|
252 |
+
if ($_REQUEST['emailid']) {
|
253 |
+
$emailid = $_REQUEST['emailid'];
|
254 |
+
}
|
255 |
+
$helperQ->process($emailid);
|
256 |
+
} else {
|
257 |
+
echo '<strong style="font-family: Arial; font-weight: bold; font-size: 12px;">' . __('Queue is empty!', WYSIJA) . '</strong>';
|
258 |
+
}
|
259 |
+
exit;
|
260 |
+
} else {
|
261 |
+
//deprecated
|
262 |
+
do_action('wysija_send_test_editor');
|
263 |
+
|
264 |
+
do_action('wysija_manual_send');
|
265 |
+
}
|
266 |
+
|
267 |
+
exit;
|
268 |
+
}
|
269 |
+
|
270 |
+
/**
|
271 |
+
* test the bounce handling maybe this should move somewhere else like config controller
|
272 |
+
* @return boolean
|
273 |
+
*/
|
274 |
+
function test_bounce() {
|
275 |
+
// bounce handling
|
276 |
+
$helper_bounce = WYSIJA::get('bounce', 'helper');
|
277 |
+
|
278 |
+
// in a multisite case we process first the bounce recording into the bounce table
|
279 |
+
if (is_multisite()) {
|
280 |
+
$helper_bounce->record_bounce_ms();
|
281 |
+
|
282 |
+
// then we take actions from what has been returned by the bounce
|
283 |
+
$helper_bounce->process_bounce_ms();
|
284 |
+
} else {
|
285 |
+
$helper_bounce->process_bounce();
|
286 |
+
}
|
287 |
+
exit;
|
288 |
+
}
|
289 |
+
|
290 |
+
function add($dataPost = false) {
|
291 |
+
$this->title = sprintf(__('Step %1$s', WYSIJA), 1);
|
292 |
+
$this->js[] = 'wysija-validator';
|
293 |
+
|
294 |
+
$this->js[] = 'wysija-edit-autonl';
|
295 |
+
$this->js['admin-campaigns-edit'] = 'admin-campaigns-edit';
|
296 |
+
$this->jsTrans['descauto'] = str_replace(array('[newsletter:number]', '[newsletter:total]', '[newsletter:post_title]'), array('<b>[newsletter:number]</b>', '<b>[newsletter:total]</b>', '<b>[newsletter:post_title]</b>'), __('Insert [newsletter:total] to show number of posts, [newsletter:post_title] to show the latest post\'s title & [newsletter:number] to display the issue number.', WYSIJA));
|
297 |
+
$this->jsTrans['descstandard'] = __('The first thing your subscribers see. Be creative and increase your open rate!', WYSIJA);
|
298 |
+
$this->immediateWarning();
|
299 |
+
$this->viewObj->title = __('First step: main details', WYSIJA);
|
300 |
+
$this->viewShow = 'add';
|
301 |
+
$this->data = array();
|
302 |
+
$this->data['campaign'] = array('name' => '', 'description' => '');
|
303 |
+
$modelConfig = WYSIJA::get('config', 'model');
|
304 |
+
$this->data['email'] = array('subject' => '', 'from_email' => $modelConfig->getValue('from_email'), 'from_name' => $modelConfig->getValue('from_name'));
|
305 |
+
$this->data['lists'] = $this->__getLists(false, true, true);
|
306 |
+
|
307 |
+
$this->dataAutoNl();
|
308 |
+
$this->jsLoc['admin-campaigns-edit']['autofields'] = $this->data['autonl']['fields'];
|
309 |
+
}
|
310 |
+
|
311 |
+
/**
|
312 |
+
* get the fields and fields value necessary when dealing with automatic newsletters
|
313 |
+
*/
|
314 |
+
function dataAutoNl() {
|
315 |
+
$dataFrequencyNoImmediate = $dataFrequency = array('daily' => __('once a day at...', WYSIJA),
|
316 |
+
'weekly' => __('weekly on...', WYSIJA),
|
317 |
+
'monthly' => __('monthly on the...', WYSIJA),
|
318 |
+
'monthlyevery' => __('monthly every...', WYSIJA),
|
319 |
+
'immediate' => __('immediately.', WYSIJA));
|
320 |
+
|
321 |
+
unset($dataFrequencyNoImmediate['immediate']);
|
322 |
+
|
323 |
+
$times = array();
|
324 |
+
$time = strtotime('00:00:00');
|
325 |
+
$toolboxH = WYSIJA::get('toolbox', 'helper');
|
326 |
+
$times['00:00:00'] = $toolboxH->localtime($time);
|
327 |
+
|
328 |
+
for ($i = 1; $i < 24; $i++) {
|
329 |
+
$time = strtotime('+ 1hour', $time);
|
330 |
+
$key = date('H:i:s', $time);
|
331 |
+
$times[$key] = $toolboxH->localtime($time);
|
332 |
+
}
|
333 |
+
|
334 |
+
$daysvalues = $toolboxH->getday();
|
335 |
+
|
336 |
+
$numberweeks = $toolboxH->getweeksnumber();
|
337 |
+
$daynumbers = $toolboxH->getdaynumber();
|
338 |
+
|
339 |
+
|
340 |
+
$dataLists = array();
|
341 |
+
|
342 |
+
foreach ($this->data['lists'] as $datal) {
|
343 |
+
if ($datal['is_enabled'])
|
344 |
+
$dataLists[$datal['list_id']] = $datal['name'];
|
345 |
+
}
|
346 |
+
|
347 |
+
// Get all available roles
|
348 |
+
$wptoolsH = WYSIJA::get('wp_tools', 'helper');
|
349 |
+
$roles = $wptoolsH->wp_get_all_roles();
|
350 |
+
$available_roles = array('any' => __('in any WordPress role', WYSIJA));
|
351 |
+
foreach ($roles as $role => $name) {
|
352 |
+
$available_roles[$role] = $name;
|
353 |
+
}
|
354 |
+
|
355 |
+
$this->data['autonl']['fields'] = array(
|
356 |
+
'event' => array(
|
357 |
+
'values' => array(
|
358 |
+
'new-articles' => __('When there\'s new content...', WYSIJA),
|
359 |
+
'subs-2-nl' => __('When someone subscribes to the list...', WYSIJA),
|
360 |
+
'new-user' => __('When a new WordPress user is added to your site...', WYSIJA),
|
361 |
+
),
|
362 |
+
'valueshow' => array(
|
363 |
+
'new-articles' => array('when-article'),
|
364 |
+
'subs-2-nl' => array('subscribetolist', 'numberafter', 'numberofwhat', 'unique_send'),
|
365 |
+
'new-user' => array('roles', 'numberafter', 'numberofwhat', 'unique_send'),
|
366 |
+
),
|
367 |
+
'style' => 'width:300px;'
|
368 |
+
),
|
369 |
+
'when-article' => array(
|
370 |
+
'values' => $dataFrequency,
|
371 |
+
'valueshow' => array(
|
372 |
+
'daily' => array('time'),
|
373 |
+
'weekly' => array('dayname', 'time'),
|
374 |
+
'monthly' => array('daynumber', 'time'),
|
375 |
+
'monthlyevery' => array('dayevery', 'dayname', 'time'),
|
376 |
+
)
|
377 |
+
),
|
378 |
+
'subscribetolist' => array(
|
379 |
+
'values' => $dataLists,
|
380 |
+
'style' => 'width:300px;'
|
381 |
+
),
|
382 |
+
'roles' => array(
|
383 |
+
'values' => $available_roles
|
384 |
+
),
|
385 |
+
'numberafter' => array(
|
386 |
+
'type' => 'input',
|
387 |
+
'style' => 'width:35px;',
|
388 |
+
'class' => 'validate[required,custom[integer],min[1]]',
|
389 |
+
),
|
390 |
+
'numberofwhat' => array(
|
391 |
+
'values' => array(
|
392 |
+
'immediate' => __('immediately.', WYSIJA),
|
393 |
+
'hours' => __('hour(s) after.', WYSIJA),
|
394 |
+
'days' => __('day(s) after.', WYSIJA),
|
395 |
+
'weeks' => __('week(s) after.', WYSIJA)
|
396 |
+
),
|
397 |
+
'valuesunit' => array(
|
398 |
+
'immediate' => __('immediately', WYSIJA),
|
399 |
+
'hours' => __('hour(s)', WYSIJA),
|
400 |
+
'days' => __('day(s)', WYSIJA),
|
401 |
+
'weeks' => __('week(s)', WYSIJA)
|
402 |
+
),
|
403 |
+
),
|
404 |
+
'dayevery' => array(
|
405 |
+
'values' => $numberweeks,
|
406 |
+
),
|
407 |
+
'dayname' => array(
|
408 |
+
'values' => $daysvalues,
|
409 |
+
),
|
410 |
+
'daynumber' => array(
|
411 |
+
'values' => $daynumbers,
|
412 |
+
),
|
413 |
+
'time' => array(
|
414 |
+
'values' => $times,
|
415 |
+
),
|
416 |
+
/* 'unique_send'=>array(
|
417 |
+
'label_before'=>__('Send this email only once.',WYSIJA),
|
418 |
+
'type'=>'checkbox'
|
419 |
+
), */
|
420 |
+
);
|
421 |
+
$helpersEvent = WYSIJA::get('autonews', 'helper');
|
422 |
+
$extraEvents = $helpersEvent->events();
|
423 |
+
|
424 |
+
/* if there are plugin to add autonewsletter event they are adding their customized field over here */
|
425 |
+
if ($extraEvents) {
|
426 |
+
foreach ($extraEvents as $k => $v) {
|
427 |
+
|
428 |
+
$this->data['autonl']['fields']['event']['values'][$k] = $v['title'];
|
429 |
+
foreach ($v['fields'] as $fieldCKEY => $fieldCVAL) {
|
430 |
+
if (isset($this->data['autonl']['fields'][$fieldCKEY]))
|
431 |
+
continue;
|
432 |
+
}
|
433 |
+
$this->data['autonl']['fields']['event']['valueshow'][$k] = array_keys($v['fields']);
|
434 |
+
}
|
435 |
+
}
|
436 |
+
}
|
437 |
+
|
438 |
+
function __getLists($enabled = true, $count = false, $notgetalllistid = false) {
|
439 |
+
$modelList = WYSIJA::get('list', 'model');
|
440 |
+
//get lists which have users and are enabled */
|
441 |
+
if ($enabled)
|
442 |
+
$enabledstrg = ' is_enabled>0 and';
|
443 |
+
else
|
444 |
+
$enabledstrg = '';
|
445 |
+
|
446 |
+
$extrasql = '';
|
447 |
+
if (!$notgetalllistid)
|
448 |
+
$extrasql = 'WHERE list_id in (SELECT distinct(list_id) from [wysija]user_list )';
|
449 |
+
$query = 'SELECT * FROM [wysija]list ' . $extrasql;
|
450 |
+
$listres = $modelList->query('get_res', $query);
|
451 |
+
|
452 |
+
if ($count) {
|
453 |
+
$mConfig = WYSIJA::get('config', 'model');
|
454 |
+
$condit = '>=';
|
455 |
+
if ($mConfig->getValue('confirm_dbleoptin'))
|
456 |
+
$condit = '>';
|
457 |
+
$qry1 = "SELECT count(distinct A.user_id) as nbsub,A.list_id FROM `[wysija]user_list` as A LEFT JOIN `[wysija]user` as B on A.user_id=B.user_id WHERE B.status $condit 0 and A.sub_date>0 and A.unsub_date=0 GROUP BY list_id";
|
458 |
+
|
459 |
+
$total = $modelList->getResults($qry1);
|
460 |
+
|
461 |
+
foreach ($total as $tot) {
|
462 |
+
foreach ($listres as $key => $res) {
|
463 |
+
if ($tot['list_id'] == $res['list_id'])
|
464 |
+
$listres[$key]['count'] = $tot['nbsub'];
|
465 |
+
}
|
466 |
+
}
|
467 |
+
}
|
468 |
+
foreach ($listres as $key => $res) {
|
469 |
+
if (!isset($res['count']))
|
470 |
+
$listres[$key]['count'] = 0;
|
471 |
+
}
|
472 |
+
return $listres;
|
473 |
+
}
|
474 |
+
|
475 |
+
function edit($dataPost = false) {
|
476 |
+
if (!$this->_checkEmailExists($_REQUEST['id']))
|
477 |
+
return;
|
478 |
+
$this->add();
|
479 |
+
|
480 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
481 |
+
|
482 |
+
$this->data['email'] = $modelEmail->getOne(false, array('email_id' => $_REQUEST['id']));
|
483 |
+
|
484 |
+
if ($this->data['email']['status'] > 0) {
|
485 |
+
$this->redirect();
|
486 |
+
}
|
487 |
+
$this->title = sprintf(__('Step %1$s', WYSIJA), 1) . ' | ' . $this->data['email']['subject'];
|
488 |
+
$modelCamp = WYSIJA::get('campaign', 'model');
|
489 |
+
$this->data['campaign'] = $modelCamp->getOne(false, array('campaign_id' => $this->data['email']['campaign_id']));
|
490 |
+
|
491 |
+
$modelCL = WYSIJA::get('campaign_list', 'model');
|
492 |
+
$this->data['campaign_list'] = $modelCL->get(false, array('campaign_id' => $this->data['email']['campaign_id']));
|
493 |
+
}
|
494 |
+
|
495 |
+
function editTemplate() {
|
496 |
+
// make sure the editor content is not cached
|
497 |
+
header('Cache-Control: no-cache, max-age=0, must-revalidate, no-store'); // HTTP/1.1
|
498 |
+
header('Expires: Fri, 9 Mar 1984 00:00:00 GMT');
|
499 |
+
|
500 |
+
if (!$this->_checkEmailExists($_REQUEST['id']))
|
501 |
+
return;
|
502 |
+
$this->viewShow = 'editTemplate';
|
503 |
+
|
504 |
+
wp_enqueue_style('thickbox');
|
505 |
+
|
506 |
+
$wjEngine = WYSIJA::get('wj_engine', 'helper');
|
507 |
+
/* WJ editor translations */
|
508 |
+
$this->jsTrans = array_merge($this->jsTrans, $wjEngine->getTranslations(), $wjEngine->getApplicationData());
|
509 |
+
|
510 |
+
$this->jsTrans['savingnl'] = __('Saving newsletter...', WYSIJA);
|
511 |
+
$this->jsTrans['errorsavingnl'] = __('Error Saving newsletter...', WYSIJA);
|
512 |
+
$this->jsTrans['savednl'] = __('Newsletter has been saved.', WYSIJA);
|
513 |
+
$this->jsTrans['previewemail'] = __('Sending preview...', WYSIJA);
|
514 |
+
$this->jsTrans['spamtestresult'] = __('Spam test results', WYSIJA);
|
515 |
+
|
516 |
+
/* WJ editor JS */
|
517 |
+
$this->js[] = 'wysija-editor';
|
518 |
+
$this->js[] = 'wysija-admin-ajax-proto';
|
519 |
+
$this->js[] = 'wysija-admin-ajax';
|
520 |
+
$this->js[] = 'wysija-base-script-64';
|
521 |
+
$this->js[] = 'media-upload';
|
522 |
+
$this->js['admin-campaigns-editDetails'] = 'admin-campaigns-editDetails';
|
523 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
524 |
+
$this->data = array();
|
525 |
+
$this->data['email'] = $modelEmail->getOne(false, array('email_id' => $_REQUEST['id']));
|
526 |
+
|
527 |
+
$this->checkIsEditable();
|
528 |
+
|
529 |
+
$this->viewObj->title = sprintf(__('Second step: "%1$s"', WYSIJA), $this->data['email']['subject']);
|
530 |
+
$this->title = sprintf(__('Step %1$s', WYSIJA), 2) . " | " . $this->data['email']['subject'];
|
531 |
+
|
532 |
+
// check if html source is enabled in the config (this will add the "html source" button in tinymce)
|
533 |
+
$model_config = WYSIJA::get('config', 'model');
|
534 |
+
$this->jsTrans['html_source_enabled'] = (int) $model_config->getValue('html_source');
|
535 |
+
}
|
536 |
+
|
537 |
+
function checkIsEditable() {
|
538 |
+
if (
|
539 |
+
!($this->data['email'] == 2 || isset($this->data['email']['params']['schedule']['isscheduled'])) && $this->data['email']['status'] > 0
|
540 |
+
) {
|
541 |
+
$this->redirect();
|
542 |
+
}
|
543 |
+
}
|
544 |
+
|
545 |
+
function pause() {
|
546 |
+
/* pause the campaign entry */
|
547 |
+
if (isset($_REQUEST['id']) && $_REQUEST['id']) {
|
548 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
549 |
+
$myemail = $modelEmail->getOne(false, array('email_id' => $_REQUEST['id']));
|
550 |
+
$modelEmail->reset();
|
551 |
+
$modelEmail->columns['modified_at']['autoup'] = 1;
|
552 |
+
$modelEmail->update(array('status' => -1), array('email_id' => $_REQUEST['id']));
|
553 |
+
|
554 |
+
if ($myemail['type'] == 2) {
|
555 |
+
return $this->redirect('admin.php?page=wysija_campaigns&id=' . $myemail['email_id'] . '&action=edit');
|
556 |
+
} else {
|
557 |
+
$this->notice(__('Sending is now paused.', WYSIJA));
|
558 |
+
}
|
559 |
+
}
|
560 |
+
|
561 |
+
$this->redirect();
|
562 |
+
}
|
563 |
+
|
564 |
+
function resume() {
|
565 |
+
/* pause the campaign entry */
|
566 |
+
if (isset($_REQUEST['id']) && $_REQUEST['id']) {
|
567 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
568 |
+
$modelEmail->columns['modified_at']['autoup'] = 1;
|
569 |
+
$modelEmail->update(array('status' => 99), array('email_id' => $_REQUEST['id']));
|
570 |
+
$this->notice(__('Sending has resumed.', WYSIJA));
|
571 |
+
}
|
572 |
+
|
573 |
+
$this->redirect();
|
574 |
+
}
|
575 |
+
|
576 |
+
function duplicate() {
|
577 |
+
|
578 |
+
/* 1 - copy the campaign entry */
|
579 |
+
|
580 |
+
$model = WYSIJA::get('campaign', 'model');
|
581 |
+
$query = 'INSERT INTO `[wysija]campaign` (`name`,`description`)
|
582 |
+
SELECT concat("' . stripslashes(__('Copy of ', WYSIJA)) . '",`name`),`description` FROM [wysija]campaign
|
583 |
+
WHERE campaign_id=' . (int) $_REQUEST['id'];
|
584 |
+
$campaignid = $model->query($query);
|
585 |
+
|
586 |
+
/* 2 - copy the email entry */
|
587 |
+
$query = 'INSERT INTO `[wysija]email` (`campaign_id`,`subject`,`body`,`type`,`params`,`wj_data`,`wj_styles`,`from_email`,`from_name`,`replyto_email`,`replyto_name`,`attachments`,`status`,`created_at`,`modified_at`)
|
588 |
+
SELECT ' . $campaignid . ', concat("' . stripslashes(__('Copy of ', WYSIJA)) . '",`subject`),`body`,`type`,`params`,`wj_data`,`wj_styles`,`from_email`,`from_name`,`replyto_email`,`replyto_name`,`attachments`,0,' . time() . ',' . time() . ' FROM [wysija]email
|
589 |
+
WHERE email_id=' . (int) $_REQUEST['email_id'];
|
590 |
+
$emailid = $model->query($query);
|
591 |
+
|
592 |
+
//let's reset the count of total childs for auto newsletter
|
593 |
+
$mEmail = WYSIJA::get('email', 'model');
|
594 |
+
$emailData = $mEmail->getOne(false, array('email_id' => $emailid));
|
595 |
+
|
596 |
+
if ($emailData['type'] == 2) {
|
597 |
+
$paramsReseted = $emailData['params'];
|
598 |
+
if (isset($paramsReseted['autonl']['total_child']))
|
599 |
+
$paramsReseted['autonl']['total_child'] = 0;
|
600 |
+
if (isset($paramsReseted['autonl']['nextSend']))
|
601 |
+
$paramsReseted['autonl']['nextSend'] = 0;
|
602 |
+
if (isset($paramsReseted['autonl']['firstSend']))
|
603 |
+
unset($paramsReseted['autonl']['firstSend']);
|
604 |
+
if (isset($paramsReseted['autonl']['lastSend']))
|
605 |
+
unset($paramsReseted['autonl']['lastSend']);
|
606 |
+
if (isset($paramsReseted['autonl']['articles']['ids']))
|
607 |
+
unset($paramsReseted['autonl']['articles']['ids']);
|
608 |
+
|
609 |
+
|
610 |
+
$mEmail->update(array('params' => $paramsReseted), array('email_id' => $emailid));
|
611 |
+
}
|
612 |
+
|
613 |
+
/* 3 - copy the campaign_list entry */
|
614 |
+
$query = "INSERT INTO `[wysija]campaign_list` (`campaign_id`,`list_id`,`filter`)
|
615 |
+
SELECT $campaignid,`list_id`,`filter` FROM [wysija]campaign_list
|
616 |
+
WHERE campaign_id=" . (int) $_REQUEST['id'];
|
617 |
+
$model->query($query);
|
618 |
+
|
619 |
+
$this->notice(__('The newsletter has been duplicated.', WYSIJA));
|
620 |
+
|
621 |
+
$this->redirect('admin.php?page=wysija_campaigns&id=' . $emailid . '&action=edit');
|
622 |
+
}
|
623 |
+
|
624 |
+
function duplicateEmail() {
|
625 |
+
if (!$this->_checkEmailExists($_REQUEST['id']))
|
626 |
+
return;
|
627 |
+
|
628 |
+
$model = WYSIJA::get('campaign', 'model');
|
629 |
+
/* 2 - copy the email entry */
|
630 |
+
$query = 'INSERT INTO `[wysija]email` (`campaign_id`,`subject`,`body`,`params`,`wj_data`,`wj_styles`,`from_email`,`from_name`,`replyto_email`,`replyto_name`,`attachments`,`status`,`created_at`,`modified_at`)
|
631 |
+
SELECT `campaign_id`, concat("' . stripslashes(__("Copy of ", WYSIJA)) . '",`subject`),`body`,`params`,`wj_data`,`wj_styles`,`from_email`,`from_name`,`replyto_email`,`replyto_name`,`attachments`,0,' . time() . ',' . time() . ' FROM [wysija]email
|
632 |
+
WHERE email_id=' . (int) $_REQUEST['id'];
|
633 |
+
$emailid = $model->query($query);
|
634 |
+
|
635 |
+
$this->notice(__('The newsletter has been duplicated.', WYSIJA));
|
636 |
+
|
637 |
+
$this->redirect('admin.php?page=wysija_campaigns&id=' . $emailid . '&action=edit');
|
638 |
+
}
|
639 |
+
|
640 |
+
function immediateWarning() {
|
641 |
+
$model_config = WYSIJA::get('config', 'model');
|
642 |
+
$is_multisite = is_multisite();
|
643 |
+
|
644 |
+
//$is_multisite=true;//PROD comment that line
|
645 |
+
if ($is_multisite && $model_config->getValue('sending_method') == 'network') {
|
646 |
+
$sending_emails_each = $model_config->getValue('ms_sending_emails_each');
|
647 |
+
$number = $model_config->getValue('ms_sending_emails_number');
|
648 |
+
} else {
|
649 |
+
$sending_emails_each = $model_config->getValue('sending_emails_each');
|
650 |
+
$number = $model_config->getValue('sending_emails_number');
|
651 |
+
}
|
652 |
+
|
653 |
+
$formsHelp = WYSIJA::get('forms', 'helper');
|
654 |
+
|
655 |
+
$timespan = $formsHelp->eachValuesSec[$sending_emails_each];
|
656 |
+
$tb = WYSIJA::get('toolbox', 'helper');
|
657 |
+
|
658 |
+
$this->immediatewarning = str_replace(
|
659 |
+
array('[link]', '[/link]', '[settings]'), array('<a href="#">', '</a>', sprintf(__('%1$s emails every %2$s', WYSIJA), $number, trim($tb->duration_string($timespan, true)))), __('Your sending settings ([settings]) can\'t send that quickly to [number] subscribers. Expect delivery delays. [link]Read more[/link]', WYSIJA));
|
660 |
+
$this->viewObj->immediatewarning = '<span class="warning-msg" id="immediatewarning">' . $this->immediatewarning . '</span>';
|
661 |
+
|
662 |
+
$this->jsTrans['immediatewarning'] = $this->immediatewarning;
|
663 |
+
|
664 |
+
//how many emails can be sent in 12 hours
|
665 |
+
//if the frequency is less than 12hours
|
666 |
+
if ($timespan < 43200) {
|
667 |
+
$ratio = floor(43200 / $timespan);
|
668 |
+
$this->jsTrans['possibleemails'] = $ratio * $number;
|
669 |
+
} else {
|
670 |
+
if ($timespan == 43200) {
|
671 |
+
$this->jsTrans['possibleemails'] = $number;
|
672 |
+
} else {
|
673 |
+
$ratio = floor($timespan / 43200);
|
674 |
+
$this->jsTrans['possibleemails'] = $number / $ratio;
|
675 |
+
}
|
676 |
+
}
|
677 |
+
}
|
678 |
+
|
679 |
+
function editDetails() {
|
680 |
+
if (!$this->_checkEmailExists($_REQUEST['id']))
|
681 |
+
return;
|
682 |
+
$this->viewObj->title = __('Final step: last details', WYSIJA);
|
683 |
+
$this->viewShow = 'editDetails';
|
684 |
+
$this->js[] = 'wysija-validator';
|
685 |
+
$this->jsTrans['previewemail'] = __('Sending preview...', WYSIJA);
|
686 |
+
$this->jsTrans['pickadate'] = __('Pick a date', WYSIJA);
|
687 |
+
$this->jsTrans['saveclose'] = __('Save & close', WYSIJA);
|
688 |
+
$this->jsTrans['sendlater'] = __('Send later', WYSIJA);
|
689 |
+
|
690 |
+
$this->jsTrans['schedule'] = __('Schedule', WYSIJA);
|
691 |
+
|
692 |
+
$this->jsTrans['emailCheck'] = WJ_Utils::get_tip_data();
|
693 |
+
|
694 |
+
|
695 |
+
$this->js[] = 'jquery-ui-datepicker';
|
696 |
+
$this->js[] = 'wysija-tooltip';
|
697 |
+
|
698 |
+
$model_list = WYSIJA::get('list', 'model');
|
699 |
+
$model_list->limitON = false;
|
700 |
+
$this->data = array();
|
701 |
+
$this->data['lists'] = $this->__getLists(false, true, true);
|
702 |
+
|
703 |
+
$model_email = WYSIJA::get('email', 'model');
|
704 |
+
$this->data['email'] = $model_email->getOne(false, array('email_id' => $_REQUEST['id']));
|
705 |
+
|
706 |
+
// The first newsletter, we don't have replyto_email and replyto_name
|
707 |
+
if (empty($this->data['email']['replyto_email']) || empty($this->data['email']['replyto_name'])) {
|
708 |
+
$current_user = wp_get_current_user();
|
709 |
+
$this->data['email']['replyto_email'] = $current_user->data->user_email;
|
710 |
+
$this->data['email']['replyto_name'] = $current_user->data->display_name;
|
711 |
+
}
|
712 |
+
|
713 |
+
|
714 |
+
if ((int) $this->data['email']['type'] == 2) {
|
715 |
+
$this->js['wysija-edit-autonl'] = 'wysija-edit-autonl';
|
716 |
+
$this->jsTrans['autonl'] = true;
|
717 |
+
$this->immediateWarning();
|
718 |
+
$this->jsTrans['send'] = __('Activate now', WYSIJA);
|
719 |
+
} else {
|
720 |
+
$this->jsTrans['autonl'] = true;
|
721 |
+
$this->viewObj->immediatewarning = '';
|
722 |
+
$this->jsTrans['send'] = __('Send', WYSIJA);
|
723 |
+
}
|
724 |
+
|
725 |
+
if ((int) $this->data['email']['type'] == 1) {
|
726 |
+
$this->jsTrans['alertsend'] = __('You are about to send this newsletter. Please confirm.', WYSIJA);
|
727 |
+
} else {
|
728 |
+
if (isset($this->data['email']['params']['autonl']['event']) && $this->data['email']['params']['autonl']['event'] == 'subs-2-nl') {
|
729 |
+
$this->data['autoresponder'] = 1;
|
730 |
+
foreach ($this->data['lists'] as $list) {
|
731 |
+
if ($list['list_id'] == $this->data['email']['params']['autonl']['subscribetolist']) {
|
732 |
+
break;
|
733 |
+
}
|
734 |
+
}
|
735 |
+
|
736 |
+
$this->jsTrans['ignoreprevious'] = sprintf(__('Are you sure you want to ignore the %1$s subscribers of the list %2$s?', WYSIJA), '"' . $list['count'] . '"', '"' . $list['name'] . '"');
|
737 |
+
}
|
738 |
+
}
|
739 |
+
|
740 |
+
$this->checkIsEditable();
|
741 |
+
|
742 |
+
$this->title = sprintf(__('Step %1$s', WYSIJA), 3) . " | " . $this->data['email']['subject'];
|
743 |
+
$this->dataAutoNl();
|
744 |
+
|
745 |
+
$this->jsLoc['wysija-edit-autonl']['autofields'] = $this->data['autonl']['fields'];
|
746 |
+
|
747 |
+
$modelCL = WYSIJA::get('campaign_list', 'model');
|
748 |
+
$this->data['campaign_list'] = $modelCL->get(false, array('campaign_id' => $this->data['email']['campaign_id']));
|
749 |
+
}
|
750 |
+
|
751 |
+
function delete() {
|
752 |
+
$this->requireSecurity();
|
753 |
+
|
754 |
+
$campaign_ids = array();
|
755 |
+
if(isset($_REQUEST['id'])) $campaign_ids[] = $_REQUEST['id'];
|
756 |
+
if(isset($_REQUEST['campaign']['campaign_id'])) $campaign_ids[] = $_REQUEST['campaign']['campaign_id'];
|
757 |
+
if(isset($_REQUEST['wysija']['campaign']['campaign_id'][0])){
|
758 |
+
$campaign_ids = array_merge($campaign_ids, $_REQUEST['wysija']['campaign']['campaign_id']);
|
759 |
+
}
|
760 |
+
|
761 |
+
if (!empty($campaign_ids)) {
|
762 |
+
foreach($campaign_ids as $campaign_id){
|
763 |
+
if($campaign_id > 0){
|
764 |
+
$model_campaign = WYSIJA::get('campaign', 'model');
|
765 |
+
$model_campaign->delete(array('campaign_id' => $campaign_id));
|
766 |
+
|
767 |
+
$model_campaign_list = WYSIJA::get('campaign_list', 'model');
|
768 |
+
$model_campaign_list->delete(array('campaign_id' => $campaign_id));
|
769 |
+
|
770 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
771 |
+
$modelEmail->delete(array('campaign_id' => $campaign_id));
|
772 |
+
}
|
773 |
+
}
|
774 |
+
|
775 |
+
$this->notice(_n(__('Newsletter deleted.', WYSIJA), __('Newsletters deleted.', WYSIJA), count($campaign_ids), WYSIJA));
|
776 |
+
} else {
|
777 |
+
$this->notice(__('Newsletter can\'t be deleted.', WYSIJA));
|
778 |
+
}
|
779 |
+
|
780 |
+
// retrieve saved filter
|
781 |
+
if (!empty($_REQUEST['action']))
|
782 |
+
unset($_REQUEST['action']);
|
783 |
+
if (!empty($_REQUEST['id']))
|
784 |
+
unset($_REQUEST['id']);
|
785 |
+
if (!empty($_REQUEST['_wpnonce']))
|
786 |
+
unset($_REQUEST['_wpnonce']);
|
787 |
+
$redirect = $this->base_url . '?' . http_build_query($_REQUEST);
|
788 |
+
$this->redirect($redirect);
|
789 |
+
}
|
790 |
+
|
791 |
+
/**
|
792 |
+
*
|
793 |
+
* this function is to delete an email that belongs to a campaign
|
794 |
+
* when we have a post notification all emails belong to the same campaign
|
795 |
+
* we don't want to delete an entire campaign when we delete a single email
|
796 |
+
*/
|
797 |
+
function deleteEmail(){
|
798 |
+
$this->requireSecurity();
|
799 |
+
if(!$this->_checkEmailExists($_REQUEST['id'])) return;
|
800 |
+
|
801 |
+
if(isset($_REQUEST['id'])){
|
802 |
+
$modelEmail=WYSIJA::get('email','model');
|
803 |
+
$modelEmail->delete(array('email_id'=>$_REQUEST['id']));
|
804 |
+
$this->notice(__('Newsletter deleted.',WYSIJA));
|
805 |
+
}else{
|
806 |
+
$this->notice(__('Newsletter can\'t be deleted.',WYSIJA));
|
807 |
+
}
|
808 |
+
|
809 |
+
$this->redirect();
|
810 |
+
}
|
811 |
+
|
812 |
+
function savecamp() {
|
813 |
+
$this->redirectAfterSave = false;
|
814 |
+
|
815 |
+
/* update email */
|
816 |
+
$data = array();
|
817 |
+
|
818 |
+
// in case the newsletter already exists
|
819 |
+
if (isset($_REQUEST['id'])) {
|
820 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
821 |
+
$modelEmail->fieldValid = false;
|
822 |
+
$emaildataarr = $modelEmail->getOne(false, array('email_id' => $_REQUEST['id']));
|
823 |
+
|
824 |
+
$model_campaign = WYSIJA::get('campaign', 'model');
|
825 |
+
$model_campaign->update(array('name' => $_POST['wysija']['email']['subject'], 'description' => ''), array('campaign_id' => $emaildataarr['campaign_id']));
|
826 |
+
|
827 |
+
$campaign_id = $emaildataarr['campaign_id'];
|
828 |
+
$email_id = $emaildataarr['email_id'];
|
829 |
+
$dataEmail = array(
|
830 |
+
'campaign_id' => $campaign_id,
|
831 |
+
'subject' => $_POST['wysija']['email']['subject'],
|
832 |
+
'type' => $_POST['wysija']['email']['type']);
|
833 |
+
|
834 |
+
if((int)$dataEmail['type'] === 2) {
|
835 |
+
// set autonl params
|
836 |
+
$dataEmail['params'] = array('autonl' => $_POST['wysija']['email']['params']['autonl']);
|
837 |
+
|
838 |
+
// WTF?
|
839 |
+
if(!isset($newparams['autonl']['unique_send'])) {
|
840 |
+
unset($dataEmail['params']['autonl']['unique_send']);
|
841 |
+
} else {
|
842 |
+
$dataEmail['params']['autonl']['unique_send'] = true;
|
843 |
+
}
|
844 |
+
}
|
845 |
+
|
846 |
+
// check if the newsletter used to be an automatic newsletter (if )
|
847 |
+
if((int)$dataEmail['type'] === 1 && (int)$emaildataarr['type'] === 2) {
|
848 |
+
// make sure we remove any kind of auto-post block
|
849 |
+
$helper_autonews = WYSIJA::get('autonews', 'helper');
|
850 |
+
$updated_email_data = $helper_autonews->remove_autopost_blocks($emaildataarr['wj_data']);
|
851 |
+
if($updated_email_data !== false) {
|
852 |
+
// if the email data has been changed, make sure to update it in the DB
|
853 |
+
$dataEmail['wj_data'] = $updated_email_data;
|
854 |
+
}
|
855 |
+
}
|
856 |
+
|
857 |
+
$modelEmail->columns['modified_at']['autoup'] = 1;
|
858 |
+
$modelEmail->debugupdate = true;
|
859 |
+
$dataEmail['email_id'] = $_REQUEST['id'];
|
860 |
+
|
861 |
+
if(isset($_REQUEST['save-reactivate'])) {
|
862 |
+
//if the button save and reactivate has been clicked then we reactivate and redirect to the newsletter page
|
863 |
+
$dataEmail['status'] = 99;
|
864 |
+
$_REQUEST['return'] = 1;
|
865 |
+
}
|
866 |
+
|
867 |
+
$data['email']['email_id'] = $modelEmail->update($dataEmail, array('email_id' => (int)$_REQUEST['id']));
|
868 |
+
} else {
|
869 |
+
// get default theme
|
870 |
+
$model_config = WYSIJA::get('config', 'model');
|
871 |
+
$default_theme = $model_config->getValue('newsletter_default_theme', 'default');
|
872 |
+
|
873 |
+
$helper_themes = WYSIJA::get('themes', 'helper');
|
874 |
+
$theme_data = $helper_themes->getData($default_theme);
|
875 |
+
|
876 |
+
// get campaign data
|
877 |
+
$model_campaign = WYSIJA::get('campaign', 'model');
|
878 |
+
$campaign_id = $model_campaign->insert(array('name' => $_POST['wysija']['email']['subject'], 'description' => ''));
|
879 |
+
|
880 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
881 |
+
$modelEmail->fieldValid = false;
|
882 |
+
$emaildata = array(
|
883 |
+
'campaign_id' => $campaign_id,
|
884 |
+
'subject' => $_POST['wysija']['email']['subject'],
|
885 |
+
'type' => (int) $_POST['wysija']['email']['type']
|
886 |
+
);
|
887 |
+
|
888 |
+
|
889 |
+
// create autonl parameters if necessary
|
890 |
+
if ((int) $_POST['wysija']['email']['type'] === 2 && isset($_POST['wysija']['email']['params']['autonl'])) {
|
891 |
+
$emaildata['params'] = array('autonl' => $_POST['wysija']['email']['params']['autonl']);
|
892 |
+
}
|
893 |
+
|
894 |
+
// create sample data depending on newsletter's type
|
895 |
+
if ((int) $_POST['wysija']['email']['type'] === 2 && $_POST['wysija']['email']['params']['autonl']['event'] === 'new-articles') {
|
896 |
+
|
897 |
+
// if immediate, post_limit is set to 1
|
898 |
+
if ($emaildata['params']['autonl']['when-article'] === 'immediate') {
|
899 |
+
$autopostParams = array(
|
900 |
+
array('key' => 'category_ids', 'value' => null),
|
901 |
+
array('key' => 'title_tag', 'value' => 'h2'),
|
902 |
+
array('key' => 'title_alignment', 'value' => 'left'),
|
903 |
+
array('key' => 'title_position', 'value' => 'inside'),
|
904 |
+
array('key' => 'image_alignment', 'value' => 'alternate'),
|
905 |
+
array('key' => 'image_width', 'value' => 325),
|
906 |
+
array('key' => 'post_content', 'value' => 'excerpt'),
|
907 |
+
array('key' => 'readmore', 'value' => base64_encode(__('Read more.', WYSIJA))),
|
908 |
+
array('key' => 'show_divider', 'value' => 'yes'),
|
909 |
+
array('key' => 'post_limit', 'value' => 1),
|
910 |
+
array('key' => 'post_type', 'value' => 'post'),
|
911 |
+
array('key' => 'author_show', 'value' => 'no'),
|
912 |
+
array('key' => 'author_label', 'value' => base64_encode(__('Author:', WYSIJA))),
|
913 |
+
array('key' => 'category_show', 'value' => 'no'),
|
914 |
+
array('key' => 'category_label', 'value' => base64_encode(__('Categories:', WYSIJA))),
|
915 |
+
array('key' => 'nopost_message', 'value' => base64_encode(__('Latest content already sent.', WYSIJA))),
|
916 |
+
array('key' => 'bgcolor1', 'value' => null),
|
917 |
+
array('key' => 'bgcolor2', 'value' => null),
|
918 |
+
array('key' => 'sort_by', 'value' => 'newest')
|
919 |
+
);
|
920 |
+
} else {
|
921 |
+
$autopostParams = array(
|
922 |
+
array('key' => 'category_ids', 'value' => null),
|
923 |
+
array('key' => 'title_tag', 'value' => 'h2'),
|
924 |
+
array('key' => 'title_alignment', 'value' => 'left'),
|
925 |
+
array('key' => 'title_position', 'value' => 'inside'),
|
926 |
+
array('key' => 'image_alignment', 'value' => 'alternate'),
|
927 |
+
array('key' => 'image_width', 'value' => 325),
|
928 |
+
array('key' => 'post_content', 'value' => 'excerpt'),
|
929 |
+
array('key' => 'readmore', 'value' => base64_encode(__('Read more.', WYSIJA))),
|
930 |
+
array('key' => 'show_divider', 'value' => 'yes'),
|
931 |
+
array('key' => 'post_limit', 'value' => 2),
|
932 |
+
array('key' => 'post_type', 'value' => 'post'),
|
933 |
+
array('key' => 'author_show', 'value' => 'no'),
|
934 |
+
array('key' => 'author_label', 'value' => base64_encode(__('Author:', WYSIJA))),
|
935 |
+
array('key' => 'category_show', 'value' => 'no'),
|
936 |
+
array('key' => 'category_label', 'value' => base64_encode(__('Categories:', WYSIJA))),
|
937 |
+
array('key' => 'nopost_message', 'value' => base64_encode(__('Latest content already sent.', WYSIJA))),
|
938 |
+
array('key' => 'bgcolor1', 'value' => null),
|
939 |
+
array('key' => 'bgcolor2', 'value' => null),
|
940 |
+
array('key' => 'sort_by', 'value' => 'newest')
|
941 |
+
);
|
942 |
+
}
|
943 |
+
|
944 |
+
// sample data for post notifications
|
945 |
+
$newwjdata = array(
|
946 |
+
'version' => WYSIJA::get_version(),
|
947 |
+
'header' => array(
|
948 |
+
'text' => NULL,
|
949 |
+
'image' => array(
|
950 |
+
'src' => WYSIJA_EDITOR_IMG . 'transparent.png',
|
951 |
+
'width' => 600,
|
952 |
+
'height' => 86,
|
953 |
+
'alignment' => 'center',
|
954 |
+
'static' => true,
|
955 |
+
),
|
956 |
+
'alignment' => 'center',
|
957 |
+
'static' => true,
|
958 |
+
'type' => 'header'
|
959 |
+
),
|
960 |
+
'body' => array(
|
961 |
+
'block-1' => array(
|
962 |
+
'text' => array(
|
963 |
+
'value' => '<h3 class="align-right">' . sprintf(__("The posts below were added with the widget %sAutomatic latest content%s", WYSIJA), '<strong>', '</strong>') . '</h3>'
|
964 |
+
),
|
965 |
+
'image' => array(
|
966 |
+
'src' => WYSIJA_EDITOR_IMG . 'default-newsletter/autonewsletter/arrow-up.png',
|
967 |
+
'width' => 45,
|
968 |
+
'height' => 45,
|
969 |
+
'alignment' => 'right',
|
970 |
+
'static' => false
|
971 |
+
),
|
972 |
+
'alignment' => 'right',
|
973 |
+
'static' => false,
|
974 |
+
'position' => '1',
|
975 |
+
'type' => 'content'
|
976 |
+
),
|
977 |
+
'block-2' => array(
|
978 |
+
'text' => array(
|
979 |
+
'value' => '<h3>' . sprintf(__('%sTo edit%s, mouse over to show edit button below.', WYSIJA), '<strong>', '</strong>') . '</h3>'
|
980 |
+
),
|
981 |
+
'image' => array(
|
982 |
+
'src' => WYSIJA_EDITOR_IMG . 'default-newsletter/autonewsletter/arrow-down.png',
|
983 |
+
'width' => 150,
|
984 |
+
'height' => 53,
|
985 |
+
'alignment' => 'left',
|
986 |
+
'static' => false
|
987 |
+
),
|
988 |
+
'alignment' => 'left',
|
989 |
+
'static' => false,
|
990 |
+
'position' => '2',
|
991 |
+
'type' => 'content'
|
992 |
+
),
|
993 |
+
'block-3' => array(
|
994 |
+
'params' => $autopostParams,
|
995 |
+
'position' => '3',
|
996 |
+
'type' => 'auto-post'
|
997 |
+
)
|
998 |
+
),
|
999 |
+
'footer' => array(
|
1000 |
+
'text' => NULL,
|
1001 |
+
'image' => array(
|
1002 |
+
'src' => WYSIJA_EDITOR_IMG . 'transparent.png',
|
1003 |
+
'width' => 600,
|
1004 |
+
'height' => 86,
|
1005 |
+
'alignment' => 'center',
|
1006 |
+
'static' => true,
|
1007 |
+
),
|
1008 |
+
'alignment' => 'center',
|
1009 |
+
'static' => true,
|
1010 |
+
'type' => 'footer'
|
1011 |
+
)
|
1012 |
+
);
|
1013 |
+
} else {
|
1014 |
+
if(!isset($emaildata['params'])) {
|
1015 |
+
$emaildata['params'] = array();
|
1016 |
+
}
|
1017 |
+
|
1018 |
+
$emaildata['params']['quickselection'] = array(
|
1019 |
+
'wp-301' => array(
|
1020 |
+
'identifier' => 'wp-301',
|
1021 |
+
'width' => 281,
|
1022 |
+
'height' => 190,
|
1023 |
+
'url' => WYSIJA_EDITOR_IMG . 'default-newsletter/newsletter/pigeon.png',
|
1024 |
+
'thumb_url' => WYSIJA_EDITOR_IMG . 'default-newsletter/newsletter/pigeon-150x150.png'
|
1025 |
+
)
|
1026 |
+
);
|
1027 |
+
|
1028 |
+
if($theme_data['divider'] === null) {
|
1029 |
+
// default theme does not exist anymore or there is no divider associated to the theme
|
1030 |
+
// we need to get the default divider in this case
|
1031 |
+
$helper_dividers = WYSIJA::get('dividers', 'helper');
|
1032 |
+
$default_divider = $helper_dividers->getDefault();
|
1033 |
+
} else {
|
1034 |
+
// set default divider
|
1035 |
+
$default_divider = $theme_data['divider'];
|
1036 |
+
}
|
1037 |
+
// set default divider in email parameters
|
1038 |
+
$emaildata['params']['divider'] = $default_divider;
|
1039 |
+
|
1040 |
+
// get bookmarks from iconset 2
|
1041 |
+
$helper_bookmarks = WYSIJA::get('bookmarks', 'helper');
|
1042 |
+
$bookmarks = $helper_bookmarks->getAllByIconset('medium', '02');
|
1043 |
+
|
1044 |
+
// sample data for regular newsletter
|
1045 |
+
$newwjdata = array(
|
1046 |
+
'version' => WYSIJA::get_version(),
|
1047 |
+
'header' => array(
|
1048 |
+
'text' => null,
|
1049 |
+
'image' => array(
|
1050 |
+
// 'src' => WYSIJA_EDITOR_IMG.'default-newsletter/newsletter/header.png',
|
1051 |
+
'src' => WYSIJA_EDITOR_IMG . 'transparent.png',
|
1052 |
+
'width' => 600,
|
1053 |
+
'height' => 86,
|
1054 |
+
'alignment' => 'center',
|
1055 |
+
'static' => true
|
1056 |
+
),
|
1057 |
+
'alignment' => 'center',
|
1058 |
+
'static' => true,
|
1059 |
+
'type' => 'header'
|
1060 |
+
),
|
1061 |
+
'body' => array(
|
1062 |
+
'block-1' => array(
|
1063 |
+
'text' => array(
|
1064 |
+
'value' => '<h2><strong>' . __('Step 1:', WYSIJA) . '</strong> ' . __('hey, click on this text!', WYSIJA) . '</h2>' . '<p>' . __('To edit, simply click on this block of text.', WYSIJA) . '</p>'
|
1065 |
+
),
|
1066 |
+
'image' => null,
|
1067 |
+
'alignment' => 'left',
|
1068 |
+
'static' => false,
|
1069 |
+
'position' => 1,
|
1070 |
+
'type' => 'content'
|
1071 |
+
),
|
1072 |
+
'block-2' => array_merge(array(
|
1073 |
+
'position' => 2,
|
1074 |
+
'type' => 'divider'
|
1075 |
+
),
|
1076 |
+
$default_divider
|
1077 |
+
),
|
1078 |
+
'block-3' => array(
|
1079 |
+
'text' => array(
|
1080 |
+
'value' => '<h2><strong>' . __('Step 2:', WYSIJA) . '</strong> ' . __('play with this image', WYSIJA) . '</h2>'
|
1081 |
+
),
|
1082 |
+
'image' => null,
|
1083 |
+
'alignment' => 'left',
|
1084 |
+
'static' => false,
|
1085 |
+
'position' => 3,
|
1086 |
+
'type' => 'content'
|
1087 |
+
),
|
1088 |
+
'block-4' => array(
|
1089 |
+
'text' => array(
|
1090 |
+
'value' => '<p>' . __('Position your mouse over the image to the left.', WYSIJA) . '</p>'
|
1091 |
+
),
|
1092 |
+
'image' => array(
|
1093 |
+
'src' => WYSIJA_EDITOR_IMG . 'default-newsletter/newsletter/pigeon.png',
|
1094 |
+
'width' => 281,
|
1095 |
+
'height' => 190,
|
1096 |
+
'alignment' => 'left',
|
1097 |
+
'static' => false
|
1098 |
+
),
|
1099 |
+
'alignment' => 'left',
|
1100 |
+
'static' => false,
|
1101 |
+
'position' => 4,
|
1102 |
+
'type' => 'content'
|
1103 |
+
),
|
1104 |
+
'block-5' => array_merge(array(
|
1105 |
+
'position' => 5,
|
1106 |
+
'type' => 'divider'
|
1107 |
+
), $default_divider
|
1108 |
+
),
|
1109 |
+
'block-6' => array(
|
1110 |
+
'text' => array(
|
1111 |
+
'value' => '<h2><strong>' . __('Step 3:', WYSIJA) . '</strong> ' . __('drop content here', WYSIJA) . '</h2>' .
|
1112 |
+
'<p>' . sprintf(__('Drag and drop %1$stext, posts, dividers.%2$s Look on the right!', WYSIJA), '<strong>', '</strong>') . '</p>' .
|
1113 |
+
'<p>' . sprintf(__('You can even %1$ssocial bookmarks%2$s like these:', WYSIJA), '<strong>', '</strong>') . '</p>'
|
1114 |
+
),
|
1115 |
+
'image' => null,
|
1116 |
+
'alignment' => 'left',
|
1117 |
+
'static' => false,
|
1118 |
+
'position' => 6,
|
1119 |
+
'type' => 'content'
|
1120 |
+
),
|
1121 |
+
'block-7' => array(
|
1122 |
+
'width' => 184,
|
1123 |
+
'alignment' => 'center',
|
1124 |
+
'items' => array(
|
1125 |
+
array_merge(array(
|
1126 |
+
'url' => 'http://www.facebook.com/mailpoetplugin',
|
1127 |
+
'alt' => 'Facebook',
|
1128 |
+
'cellWidth' => 61,
|
1129 |
+
'cellHeight' => 32
|
1130 |
+
), $bookmarks['facebook']),
|
1131 |
+
array_merge(array(
|
1132 |
+
'url' => 'http://www.twitter.com/mail_poet',
|
1133 |
+
'alt' => 'Twitter',
|
1134 |
+
'cellWidth' => 61,
|
1135 |
+
'cellHeight' => 32
|
1136 |
+
), $bookmarks['twitter']),
|
1137 |
+
array_merge(array(
|
1138 |
+
'url' => 'https://plus.google.com/+Mailpoet',
|
1139 |
+
'alt' => 'Google',
|
1140 |
+
'cellWidth' => 61,
|
1141 |
+
'cellHeight' => 32
|
1142 |
+
), $bookmarks['google'])
|
1143 |
+
),
|
1144 |
+
'position' => 7,
|
1145 |
+
'type' => 'gallery'
|
1146 |
+
),
|
1147 |
+
'block-8' => array_merge(array(
|
1148 |
+
'position' => 8,
|
1149 |
+
'type' => 'divider'
|
1150 |
+
), $default_divider
|
1151 |
+
),
|
1152 |
+
'block-9' => array(
|
1153 |
+
'text' => array(
|
1154 |
+
'value' => '<h2><strong>' . __('Step 4:', WYSIJA) . '</strong> ' . __('and the footer?', WYSIJA) . '</h2>' .
|
1155 |
+
'<p>' . sprintf(__('Change the footer\'s content in MailPoet\'s %1$sSettings%2$s page.', WYSIJA), '<strong>', '</strong>') . '</p>'
|
1156 |
+
),
|
1157 |
+
'image' => null,
|
1158 |
+
'alignment' => 'left',
|
1159 |
+
'static' => false,
|
1160 |
+
'position' => 9,
|
1161 |
+
'type' => 'content'
|
1162 |
+
)
|
1163 |
+
),
|
1164 |
+
'footer' => array(
|
1165 |
+
'text' => NULL,
|
1166 |
+
'image' => array(
|
1167 |
+
// 'src' => WYSIJA_EDITOR_IMG.'default-newsletter/newsletter/footer.png',
|
1168 |
+
'src' => WYSIJA_EDITOR_IMG . 'transparent.png',
|
1169 |
+
'width' => 600,
|
1170 |
+
'height' => 86,
|
1171 |
+
'alignment' => 'center',
|
1172 |
+
'static' => true,
|
1173 |
+
),
|
1174 |
+
'alignment' => 'center',
|
1175 |
+
'static' => true,
|
1176 |
+
'type' => 'footer'
|
1177 |
+
)
|
1178 |
+
);
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
// set default styles
|
1182 |
+
$helper_engine = WYSIJA::get('wj_engine', 'helper');
|
1183 |
+
$styles = $helper_engine->getDefaultStyles();
|
1184 |
+
// end - set default styles
|
1185 |
+
|
1186 |
+
// set theme specific data
|
1187 |
+
if($theme_data['header'] !== null) {
|
1188 |
+
$newwjdata['header'] = $theme_data['header'];
|
1189 |
+
}
|
1190 |
+
if($theme_data['footer'] !== null) {
|
1191 |
+
$newwjdata['footer'] = $theme_data['footer'];
|
1192 |
+
}
|
1193 |
+
if($theme_data['divider'] !== null) {
|
1194 |
+
$newwjdata['widgets'] = array('divider' => $theme_data['divider']);
|
1195 |
+
}
|
1196 |
+
// end - set theme specific data
|
1197 |
+
|
1198 |
+
$emaildata['wj_data'] = base64_encode(serialize($newwjdata));
|
1199 |
+
$emaildata['wj_styles'] = base64_encode(serialize($styles));
|
1200 |
+
|
1201 |
+
$email_id = $data['email']['email_id'] = $modelEmail->insert($emaildata);
|
1202 |
+
|
1203 |
+
$this->notice(__('Newsletter successfully created.', WYSIJA));
|
1204 |
+
}
|
1205 |
+
|
1206 |
+
$this->_saveLists($campaign_id, true);
|
1207 |
+
|
1208 |
+
if (isset($_REQUEST['return']))
|
1209 |
+
$this->redirect();
|
1210 |
+
else {
|
1211 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=editTemplate&id=' . $email_id);
|
1212 |
+
}
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
function saveemail() {
|
1216 |
+
$this->redirectAfterSave = false;
|
1217 |
+
//$this->requireSecurity();
|
1218 |
+
$modelEmail = WYSIJA::get("email", "model");
|
1219 |
+
$modelEmail->fieldValid = false;
|
1220 |
+
$emaildataarr = $modelEmail->getOne(array('email_id' => $_REQUEST['id']));
|
1221 |
+
|
1222 |
+
if (isset($_REQUEST['save-reactivate'])) {
|
1223 |
+
//if the button save and reactivate has been clicked then we reactivate and redirect to the newsletter page
|
1224 |
+
$dataEmail['status'] = 99;
|
1225 |
+
$_REQUEST['return'] = 1;
|
1226 |
+
}
|
1227 |
+
|
1228 |
+
if (isset($_REQUEST['return']))
|
1229 |
+
$this->redirect();
|
1230 |
+
else {
|
1231 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=editDetails&id=' . $emaildataarr['email_id']);
|
1232 |
+
}
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
function savelast() {
|
1236 |
+
$this->redirectAfterSave = false;
|
1237 |
+
$post_notification = false;
|
1238 |
+
$this->requireSecurity();
|
1239 |
+
|
1240 |
+
if (!isset($_POST['wysija']['email']['from_name']) || !isset($_POST['wysija']['email']['from_email']) || !isset($_POST['wysija']['email']['replyto_name']) || !isset($_POST['wysija']['email']['replyto_email'])) {
|
1241 |
+
$this->error(__('Information is missing.', WYSIJA));
|
1242 |
+
return $this->editDetails();
|
1243 |
+
}
|
1244 |
+
if (isset($_REQUEST['wysija']['email']['params']['googletrackingcode']) && $_REQUEST['wysija']['email']['params']['googletrackingcode'] &&
|
1245 |
+
(!is_string($_REQUEST['wysija']['email']['params']['googletrackingcode']) OR
|
1246 |
+
preg_match('#[^a-z0-9_-\s]#i', $_REQUEST['wysija']['email']['params']['googletrackingcode']) !== 0 )) {
|
1247 |
+
//force to simple text
|
1248 |
+
$_REQUEST['wysija']['email']['params']['googletrackingcode'] = preg_replace('#[^a-z0-9_-\s]#i', '_', $_REQUEST['wysija']['email']['params']['googletrackingcode']);
|
1249 |
+
$this->error(__('Your Google Campaign can only contain letters, number, spaces and hyphens!', WYSIJA), 1);
|
1250 |
+
return $this->editDetails();
|
1251 |
+
}
|
1252 |
+
|
1253 |
+
$update_email = array(
|
1254 |
+
'email_id' => $_POST['wysija']['email']['email_id'],
|
1255 |
+
'from_name' => $_POST['wysija']['email']['from_name'],
|
1256 |
+
'from_email' => $_POST['wysija']['email']['from_email'],
|
1257 |
+
'replyto_name' => $_POST['wysija']['email']['replyto_name'],
|
1258 |
+
'replyto_email' => $_POST['wysija']['email']['replyto_email'],
|
1259 |
+
'subject' => $_POST['wysija']['email']['subject'],
|
1260 |
+
);
|
1261 |
+
$model_email = WYSIJA::get('email', 'model');
|
1262 |
+
if (isset($_POST['wysija']['email']['params']))
|
1263 |
+
$update_email['params'] = $_POST['wysija']['email']['params'];
|
1264 |
+
|
1265 |
+
//insert into campaigns lists
|
1266 |
+
$this->_saveLists($_POST['wysija']['campaign']['campaign_id']);
|
1267 |
+
$email_data = $model_email->getOne($_POST['wysija']['email']['email_id']);
|
1268 |
+
|
1269 |
+
// if we just save the draf we don't go through the big sending process setup
|
1270 |
+
if (isset($_POST['submit-draft']) || isset($_POST['submit-pause']) || (isset($_REQUEST['wj_redir']) && $_REQUEST['wj_redir'] == 'savelastback')) {
|
1271 |
+
if (isset($_POST['wysija']['email']['params']['schedule']['isscheduled']))
|
1272 |
+
$this->notice(__('Newsletter has been scheduled.', WYSIJA));
|
1273 |
+
else
|
1274 |
+
$this->notice(__('Newsletter has been saved as a draft.', WYSIJA));
|
1275 |
+
}else {
|
1276 |
+
// we update the param attribute with what's has been posted
|
1277 |
+
foreach ($update_email as $ki => $vi) {
|
1278 |
+
if ($ki == 'params') {
|
1279 |
+
foreach ($vi as $parake => $paraval) {
|
1280 |
+
$email_data['params'][$parake] = $paraval;
|
1281 |
+
}
|
1282 |
+
$update_email[$ki] = $email_data[$ki];
|
1283 |
+
}
|
1284 |
+
else
|
1285 |
+
$email_data[$ki] = $vi;
|
1286 |
+
}
|
1287 |
+
|
1288 |
+
// if the checkbox to ignore retroactivity is here we just tell the class
|
1289 |
+
if (isset($_POST['wysija']['email']['ignore_subscribers'])) {
|
1290 |
+
$model_email->retro_active_autoresponders = false;
|
1291 |
+
}
|
1292 |
+
|
1293 |
+
// activate or send the email depending on the typ
|
1294 |
+
$model_email->send_activate($email_data);
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
// update email
|
1298 |
+
$update_email['type'] = $email_data['type'];
|
1299 |
+
|
1300 |
+
if ($post_notification) {
|
1301 |
+
$helper_autonews = WYSIJA::get('autonews', 'helper');
|
1302 |
+
$update_email['params']['autonl']['nextSend'] = $helper_autonews->getNextSend($update_email);
|
1303 |
+
}
|
1304 |
+
|
1305 |
+
$model_email->reset();
|
1306 |
+
$model_email->columns['modified_at']['autoup'] = 1;
|
1307 |
+
|
1308 |
+
// update some fields of the email
|
1309 |
+
$model_email->update($update_email);
|
1310 |
+
|
1311 |
+
// update the campaign subject which ispretty much useless but good to keep in sync with the email
|
1312 |
+
$model_campaign = WYSIJA::get('campaign', 'model');
|
1313 |
+
$model_campaign->reset();
|
1314 |
+
$update_campaign = array('campaign_id' => $_REQUEST['id'], 'name' => $_POST['wysija']['email']['subject']);
|
1315 |
+
$model_campaign->update($update_campaign);
|
1316 |
+
|
1317 |
+
if (isset($_REQUEST['wj_redir']) && $_REQUEST['wj_redir'] == 'savelastback') {
|
1318 |
+
return $this->redirect('admin.php?page=wysija_campaigns&action=editTemplate&id=' . $_POST['wysija']['email']['email_id']);
|
1319 |
+
}
|
1320 |
+
else
|
1321 |
+
return $this->redirect();
|
1322 |
+
}
|
1323 |
+
|
1324 |
+
function _saveLists($campaignId, $flagup = false) {
|
1325 |
+
//record the list that we have in that campaign
|
1326 |
+
$modelCampL = WYSIJA::get('campaign_list', 'model');
|
1327 |
+
if ($flagup || (int) $campaignId > 0) {
|
1328 |
+
$modelCampL->delete(array('equal' => array('campaign_id' => $campaignId)));
|
1329 |
+
$modelCampL->reset();
|
1330 |
+
}
|
1331 |
+
|
1332 |
+
if (isset($_POST['wysija']['campaign_list']['list_id'])) {
|
1333 |
+
//$modelCampL=WYSIJA::get("campaign_list","model");
|
1334 |
+
foreach ($_POST['wysija']['campaign_list']['list_id'] as $listid) {
|
1335 |
+
$modelCampL->insert(array('campaign_id' => $campaignId, "list_id" => $listid));
|
1336 |
+
}
|
1337 |
+
}
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
function _addLinkFilter($status, $type = 'status') {
|
1341 |
+
switch ($type) {
|
1342 |
+
case 'status':
|
1343 |
+
switch ($status) {
|
1344 |
+
case 'draft':
|
1345 |
+
$this->filters['equal'] = array('status' => 0);
|
1346 |
+
break;
|
1347 |
+
case 'sending':
|
1348 |
+
$this->filters['equal'] = array('status' => 99);
|
1349 |
+
break;
|
1350 |
+
case 'sent':
|
1351 |
+
$this->filters['equal'] = array('status' => 2);
|
1352 |
+
break;
|
1353 |
+
case 'paused':
|
1354 |
+
$this->filters['equal'] = array('status' => -1);
|
1355 |
+
break;
|
1356 |
+
case 'scheduled':
|
1357 |
+
$this->filters['equal'] = array('status' => 4);
|
1358 |
+
break;
|
1359 |
+
}
|
1360 |
+
break;
|
1361 |
+
case 'type':
|
1362 |
+
switch ($status) {
|
1363 |
+
case 'regular':
|
1364 |
+
$this->filters['equal'] = array('type' => 1);
|
1365 |
+
break;
|
1366 |
+
case 'autonl':
|
1367 |
+
$this->filters['equal'] = array('type' => 2);
|
1368 |
+
break;
|
1369 |
+
}
|
1370 |
+
break;
|
1371 |
+
}
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
/**
|
1375 |
+
* Get all campaigns, based on the filters
|
1376 |
+
*/
|
1377 |
+
protected function get_campaigns() {
|
1378 |
+
$order_by = ' ORDER BY ';
|
1379 |
+
|
1380 |
+
if (isset($_REQUEST['orderby'])) {
|
1381 |
+
if (!is_string($_REQUEST['orderby']) OR preg_match('|[^a-z0-9#_.-]|i', $_REQUEST['orderby']) !== 0) {
|
1382 |
+
$_REQUEST['orderby'] = '';
|
1383 |
+
}
|
1384 |
+
if (!in_array(strtoupper($_REQUEST['ordert']), array('DESC', 'ASC')))
|
1385 |
+
$_REQUEST['ordert'] = 'DESC';
|
1386 |
+
$order_by.=$_REQUEST['orderby'] . ' ' . $_REQUEST['ordert'];
|
1387 |
+
}else {
|
1388 |
+
$order_by.='FIELD(B.status, 99,3,1,0,2), ';
|
1389 |
+
$order_by.='B.status desc, ';
|
1390 |
+
$order_by.='B.modified_at desc, ';
|
1391 |
+
$order_by.='B.sent_at desc, ';
|
1392 |
+
$order_by.='B.type desc, ';
|
1393 |
+
$order_by.='A.' . $this->modelObj->getPk() . ' DESC';
|
1394 |
+
}
|
1395 |
+
|
1396 |
+
$query = '
|
1397 |
+
SELECT
|
1398 |
+
A.`campaign_id`,
|
1399 |
+
A.`name` as `campaign_name`,
|
1400 |
+
B.`subject` as `name`,
|
1401 |
+
A.`description`,
|
1402 |
+
B.`params`,
|
1403 |
+
B.`type`,
|
1404 |
+
B.`number_sent`,
|
1405 |
+
B.`number_opened`,
|
1406 |
+
B.`number_clicked`,
|
1407 |
+
B.`number_unsub`,
|
1408 |
+
(B.`number_sent` +
|
1409 |
+
B.`number_opened` +
|
1410 |
+
B.`number_clicked` +
|
1411 |
+
B.`number_unsub` +
|
1412 |
+
B.`number_bounce` +
|
1413 |
+
B.`number_forward`
|
1414 |
+
) AS `number_total`,
|
1415 |
+
B.`status`,
|
1416 |
+
B.`created_at`,
|
1417 |
+
B.`modified_at`,
|
1418 |
+
B.`sent_at`,
|
1419 |
+
B.`email_id`
|
1420 |
+
FROM
|
1421 |
+
`[wysija]' . $this->modelObj->table_name . '` AS A
|
1422 |
+
LEFT JOIN
|
1423 |
+
`[wysija]email` AS B on A.`campaign_id` = B.`campaign_id`
|
1424 |
+
LEFT JOIN
|
1425 |
+
`[wysija]campaign_list` AS C on A.`campaign_id` = C.`campaign_id`';
|
1426 |
+
$campaigns = $this->modelObj->getResults($query . $this->modelObj->makeWhere() . ' GROUP BY B.email_id' . $order_by . $this->modelObj->setLimit());
|
1427 |
+
|
1428 |
+
// calculate percetange of open / click / unsubscribe
|
1429 |
+
$helper_numbers = WYSIJA::get('numbers', 'helper');
|
1430 |
+
foreach ($campaigns as &$campaign) {
|
1431 |
+
// open rate, based on sent number
|
1432 |
+
$campaign['rate_opened'] = $helper_numbers->calculate_percetage($campaign['number_opened'], $campaign['number_total'], 1);
|
1433 |
+
// click rate, based on opened number
|
1434 |
+
$campaign['rate_clicked'] = $helper_numbers->calculate_percetage($campaign['number_clicked'], $campaign['number_total'], 1);
|
1435 |
+
// unsubscribe rate, based on opened number
|
1436 |
+
$campaign['rate_unsub'] = $helper_numbers->calculate_percetage($campaign['number_unsub'], $campaign['number_total'], 1);
|
1437 |
+
}
|
1438 |
+
return $campaigns;
|
1439 |
+
}
|
1440 |
+
|
1441 |
+
/**
|
1442 |
+
* Get the first campaign in history
|
1443 |
+
*/
|
1444 |
+
protected function get_oldest_compaign() {
|
1445 |
+
$query = '
|
1446 |
+
SELECT
|
1447 |
+
MIN(B.created_at) as datemin
|
1448 |
+
FROM `[wysija]' . $this->modelObj->table_name . '` as A
|
1449 |
+
LEFT JOIN
|
1450 |
+
`[wysija]email` AS B on A.campaign_id = B.campaign_id
|
1451 |
+
LEFT JOIN
|
1452 |
+
`[wysija]campaign_list` as C on A.campaign_id = C.campaign_id';
|
1453 |
+
|
1454 |
+
return $this->modelObj->query('get_row', $query . $this->modelObj->makeWhere());
|
1455 |
+
}
|
1456 |
+
|
1457 |
+
/**
|
1458 |
+
* Count ALL emails of each email-status
|
1459 |
+
* @todo: move to model
|
1460 |
+
*/
|
1461 |
+
protected function count_emails_by_status() {
|
1462 |
+
$query = '
|
1463 |
+
SELECT
|
1464 |
+
COUNT(`email_id`) AS `campaigns`,
|
1465 |
+
`status`
|
1466 |
+
FROM
|
1467 |
+
`[wysija]email`
|
1468 |
+
WHERE
|
1469 |
+
`campaign_id` > 0
|
1470 |
+
GROUP BY `status`';
|
1471 |
+
|
1472 |
+
$countss = $this->modelObj->query('get_res', $query);
|
1473 |
+
$counts = array();
|
1474 |
+
$total = 0;
|
1475 |
+
|
1476 |
+
foreach ($countss as $count) {
|
1477 |
+
switch ($count['status']) {
|
1478 |
+
case '0':
|
1479 |
+
$type = 'draft';
|
1480 |
+
break;
|
1481 |
+
case '1':
|
1482 |
+
case '3':
|
1483 |
+
case '99':
|
1484 |
+
$type = 'sending';
|
1485 |
+
break;
|
1486 |
+
case '2':
|
1487 |
+
$type = 'sent';
|
1488 |
+
break;
|
1489 |
+
case '-1':
|
1490 |
+
$type = 'paused';
|
1491 |
+
break;
|
1492 |
+
case '4':
|
1493 |
+
$type = 'scheduled';
|
1494 |
+
break;
|
1495 |
+
}
|
1496 |
+
$total = $total + $count['campaigns'];
|
1497 |
+
$counts['status-' . $type] = $count['campaigns'];
|
1498 |
+
}
|
1499 |
+
return $counts;
|
1500 |
+
}
|
1501 |
+
|
1502 |
+
/**
|
1503 |
+
* Count emails which matched the filters
|
1504 |
+
*/
|
1505 |
+
protected function count_emails() {
|
1506 |
+
$query = '
|
1507 |
+
SELECT
|
1508 |
+
COUNT(DISTINCT B.`email_id`) AS `campaigns`
|
1509 |
+
FROM
|
1510 |
+
`[wysija]' . $this->modelObj->table_name . '` AS A
|
1511 |
+
LEFT JOIN
|
1512 |
+
`[wysija]email` AS B ON A.`campaign_id` = B.`campaign_id`
|
1513 |
+
LEFT JOIN
|
1514 |
+
`[wysija]campaign_list` AS C ON A.`campaign_id` = C.`campaign_id`';
|
1515 |
+
return $this->modelObj->count($query . $this->modelObj->makeWhere(), 'campaigns');
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
/**
|
1519 |
+
* Count ALL emails of each type of email
|
1520 |
+
*/
|
1521 |
+
protected function count_emails_by_type() {
|
1522 |
+
$query = '
|
1523 |
+
SELECT
|
1524 |
+
COUNT(`email_id`) AS `campaigns`,
|
1525 |
+
`type`
|
1526 |
+
FROM
|
1527 |
+
`[wysija]email`
|
1528 |
+
WHERE
|
1529 |
+
`campaign_id` > 0
|
1530 |
+
GROUP BY `type`';
|
1531 |
+
$countss = $this->modelObj->query('get_res', $query, ARRAY_A);
|
1532 |
+
$counts = array();
|
1533 |
+
foreach ($countss as $count) {
|
1534 |
+
switch ($count['type']) {
|
1535 |
+
case '1':
|
1536 |
+
$type = 'regular';
|
1537 |
+
break;
|
1538 |
+
case '2':
|
1539 |
+
$type = 'autonl';
|
1540 |
+
break;
|
1541 |
+
}
|
1542 |
+
$counts['type-' . $type] = $count['campaigns'];
|
1543 |
+
}
|
1544 |
+
return $counts;
|
1545 |
+
}
|
1546 |
+
|
1547 |
+
/**
|
1548 |
+
* Get all existing lists
|
1549 |
+
*/
|
1550 |
+
protected function get_lists() {
|
1551 |
+
$model_list = WYSIJA::get('list', 'model');
|
1552 |
+
$query = '
|
1553 |
+
SELECT
|
1554 |
+
A.`list_id`,
|
1555 |
+
A.`name`,
|
1556 |
+
A.`is_enabled`,
|
1557 |
+
COUNT( B.`campaign_id` ) AS `users`
|
1558 |
+
FROM
|
1559 |
+
`[wysija]' . $model_list->table_name . '` as A
|
1560 |
+
LEFT JOIN
|
1561 |
+
`[wysija]campaign_list` AS B on A.`list_id` = B.`list_id`
|
1562 |
+
GROUP BY A.`list_id`';
|
1563 |
+
$result = $model_list->getResults($query);
|
1564 |
+
$lists = array();
|
1565 |
+
foreach ($result as $list_obj) {
|
1566 |
+
$lists[$list_obj['list_id']] = $list_obj;
|
1567 |
+
}
|
1568 |
+
return $lists;
|
1569 |
+
}
|
1570 |
+
|
1571 |
+
function defaultDisplay() {
|
1572 |
+
$this->data['base_url'] = $this->base_url . '?' . http_build_query($_REQUEST); // saved filter
|
1573 |
+
$this->title = __('Newsletters', WYSIJA);
|
1574 |
+
$this->viewShow = $this->action = 'main';
|
1575 |
+
$this->js[] = 'wysija-admin-list';
|
1576 |
+
$this->jsTrans["selecmiss"] = __('Please select a newsletter.', WYSIJA);
|
1577 |
+
$this->jsTrans['suredelete'] = __('Delete this newsletter for ever?', WYSIJA);
|
1578 |
+
$this->jsTrans['suredelete_bulk'] = __('Delete these newsletters for ever?', WYSIJA);
|
1579 |
+
$this->jsTrans['processqueue'] = __('Sending batch of emails...', WYSIJA);
|
1580 |
+
$this->jsTrans['viewnews'] = __('View newsletter', WYSIJA);
|
1581 |
+
$this->jsTrans['confirmpauseedit'] = __('The newsletter will be deactivated, you will need to reactivate it once you\'re over editing it. Do you want to proceed?', WYSIJA);
|
1582 |
+
|
1583 |
+
|
1584 |
+
//get the filters
|
1585 |
+
if (isset($_REQUEST['search']) && $_REQUEST['search']) {
|
1586 |
+
$this->filters['like'] = array();
|
1587 |
+
foreach ($this->searchable as $field)
|
1588 |
+
$this->filters['like'][$field] = $_REQUEST['search'];
|
1589 |
+
}
|
1590 |
+
|
1591 |
+
if (isset($_REQUEST['filter-list']) && $_REQUEST['filter-list']) {
|
1592 |
+
$this->filters['equal'] = array('C.list_id' => $_REQUEST['filter-list']);
|
1593 |
+
}
|
1594 |
+
|
1595 |
+
if (isset($_REQUEST['filter-date']) && $_REQUEST['filter-date']) {
|
1596 |
+
$this->filters['greater_eq'] = array('created_at' => $_REQUEST['filter-date']);
|
1597 |
+
$this->filters['less_eq'] = array('created_at' => strtotime('+1 month', $_REQUEST['filter-date']));
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
$this->filters['is'] = array('type' => 'IS NOT NULL');
|
1601 |
+
|
1602 |
+
|
1603 |
+
if (isset($_REQUEST['link_filter']) && $_REQUEST['link_filter']) {
|
1604 |
+
$linkfilters = explode('-', $_REQUEST['link_filter']);
|
1605 |
+
|
1606 |
+
if (count($linkfilters) > 1) {
|
1607 |
+
$this->_addLinkFilter($linkfilters[1], $linkfilters[0]);
|
1608 |
+
} else {
|
1609 |
+
$this->_addLinkFilter($_REQUEST['link_filter']);
|
1610 |
+
}
|
1611 |
+
}
|
1612 |
+
|
1613 |
+
$this->modelObj->noCheck = true;
|
1614 |
+
$this->modelObj->reset();
|
1615 |
+
if ($this->filters)
|
1616 |
+
$this->modelObj->setConditions($this->filters);
|
1617 |
+
|
1618 |
+
|
1619 |
+
// Count emails by status and type
|
1620 |
+
$emails_by_status = $this->count_emails_by_status();
|
1621 |
+
$emails_by_type = $this->count_emails_by_type();
|
1622 |
+
$counts = array_merge($emails_by_status, $emails_by_type);
|
1623 |
+
$counts['all'] = array_sum($emails_by_status);
|
1624 |
+
|
1625 |
+
// collect data
|
1626 |
+
$this->data['campaigns'] = $this->get_campaigns();
|
1627 |
+
$this->data['datemin'] = $this->get_oldest_compaign();
|
1628 |
+
$lists = $this->get_lists(); // $lists is in use later within this scope
|
1629 |
+
$this->data['lists'] = $lists;
|
1630 |
+
|
1631 |
+
// for paging
|
1632 |
+
$this->modelObj->countRows = $this->filters ? $this->count_emails () : $counts['all'];
|
1633 |
+
|
1634 |
+
|
1635 |
+
// count queue
|
1636 |
+
$email_ids = array();
|
1637 |
+
foreach ($this->data['campaigns'] as $emailcamp) {
|
1638 |
+
if (in_array($emailcamp['status'], array(1, 3, 99)))
|
1639 |
+
$email_ids[] = $emailcamp['email_id'];
|
1640 |
+
}
|
1641 |
+
$model_queue = WYSIJA::get('queue', 'model');
|
1642 |
+
$model_queue->setConditions(array("email_id" => $email_ids));
|
1643 |
+
$model_queue->groupBy('email_id');
|
1644 |
+
$queue = $model_queue->count();
|
1645 |
+
if ($queue) {
|
1646 |
+
$this->viewObj->queuedemails = $queue;
|
1647 |
+
}
|
1648 |
+
|
1649 |
+
$this->modelObj->reset();
|
1650 |
+
|
1651 |
+
//make a loop from the first created to now and increment an array of months
|
1652 |
+
$now = time();
|
1653 |
+
$this->data['dates'] = array();
|
1654 |
+
|
1655 |
+
if ((int) $this->data['datemin']['datemin'] > 1) {
|
1656 |
+
setlocale(LC_TIME, 'en_US');
|
1657 |
+
$formtlettres = "1 " . date('F', $this->data['datemin']['datemin']) . ' ' . date("Y", $this->data['datemin']['datemin']);
|
1658 |
+
$month_start = strtotime($formtlettres);
|
1659 |
+
|
1660 |
+
if ($month_start > 0) {
|
1661 |
+
for ($i = $month_start; $i < $now; $i = strtotime('+1 month', $i)) {
|
1662 |
+
$this->data['dates'][$i] = date_i18n('F Y', $i); //date('F Y',$i);
|
1663 |
+
}
|
1664 |
+
}
|
1665 |
+
}
|
1666 |
+
|
1667 |
+
|
1668 |
+
|
1669 |
+
$campaign_ids_sent = $campaign_ids = array();
|
1670 |
+
foreach ($this->data['campaigns'] as &$campaign) {
|
1671 |
+
$campaign_ids[] = $campaign['campaign_id'];
|
1672 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
1673 |
+
$modelEmail->getParams($campaign);
|
1674 |
+
if (in_array((int) $campaign['status'], array(-1, 1, 2, 3, 99)))
|
1675 |
+
$campaign_ids_sent[] = $campaign['campaign_id'];
|
1676 |
+
}
|
1677 |
+
|
1678 |
+
// 3 - campaign_list request & count request for queue */
|
1679 |
+
if ($campaign_ids) {
|
1680 |
+
$modeluList = WYSIJA::get('campaign_list', 'model');
|
1681 |
+
$userlists = $modeluList->get(array('list_id', 'campaign_id'), array('campaign_id' => $campaign_ids));
|
1682 |
+
|
1683 |
+
if ($campaign_ids_sent) {
|
1684 |
+
$modeluList = WYSIJA::get("email_user_stat", "model");
|
1685 |
+
$statstotal = $modeluList->getResults("SELECT COUNT(A.user_id) as count,B.email_id FROM `[wysija]queue` as A
|
1686 |
+
JOIN `[wysija]email` as B on A.email_id=B.email_id
|
1687 |
+
WHERE B.campaign_id IN (" . implode(",", $campaign_ids_sent) . ") group by B.email_id");
|
1688 |
+
|
1689 |
+
$senttotalgroupedby = $modeluList->getResults("SELECT COUNT(A.user_id) as count,B.campaign_id,B.email_id,B.type,B.status,A.status as statususer FROM `[wysija]" . $modeluList->table_name . "` as A
|
1690 |
+
JOIN `[wysija]email` as B on A.email_id=B.email_id
|
1691 |
+
WHERE B.campaign_id IN (" . implode(",", $campaign_ids_sent) . ") group by A.status,B.email_id"); //,A.status
|
1692 |
+
|
1693 |
+
|
1694 |
+
$updateEmail = array();
|
1695 |
+
$columnnamestatus = array(0 => "number_sent", 1 => "number_opened", 2 => "number_clicked", 3 => "number_unsub", -1 => "number_bounce");
|
1696 |
+
foreach ($senttotalgroupedby as $sentbystatus) {
|
1697 |
+
if ($sentbystatus['statususer'] != "-2")
|
1698 |
+
$updateEmail[$sentbystatus['email_id']][$columnnamestatus[$sentbystatus['statususer']]] = $sentbystatus['count'];
|
1699 |
+
if (isset($senttotal[$sentbystatus['email_id']])) {
|
1700 |
+
$senttotal[$sentbystatus['email_id']]['count'] = (int) $senttotal[$sentbystatus['email_id']]['count'] + (int) $sentbystatus['count'];
|
1701 |
+
} else {
|
1702 |
+
unset($sentbystatus['statususer']);
|
1703 |
+
$senttotal[$sentbystatus['email_id']] = $sentbystatus;
|
1704 |
+
}
|
1705 |
+
}
|
1706 |
+
|
1707 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
1708 |
+
|
1709 |
+
foreach ($updateEmail as $emailid => $update) {
|
1710 |
+
|
1711 |
+
foreach ($columnnamestatus as $v) {
|
1712 |
+
if (!isset($update[$v]))
|
1713 |
+
$update[$v] = 0;
|
1714 |
+
}
|
1715 |
+
|
1716 |
+
$modelEmail->update($update, array('email_id' => $emailid));
|
1717 |
+
$modelEmail->reset();
|
1718 |
+
}
|
1719 |
+
|
1720 |
+
|
1721 |
+
/**/
|
1722 |
+
$modelC = WYSIJA::get('config', 'model');
|
1723 |
+
$running = false;
|
1724 |
+
|
1725 |
+
$is_multisite = is_multisite();
|
1726 |
+
|
1727 |
+
//$is_multisite=true;//PROD comment that line
|
1728 |
+
if ($is_multisite && $modelC->getValue('sending_method') == 'network') {
|
1729 |
+
$sending_emails_each = $modelC->getValue('ms_sending_emails_each');
|
1730 |
+
} else {
|
1731 |
+
$sending_emails_each = $modelC->getValue('sending_emails_each');
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
if ($modelC->getValue('cron_manual')) {
|
1735 |
+
$formsHelp = WYSIJA::get('forms', 'helper');
|
1736 |
+
$queue_frequency = $formsHelp->eachValuesSec[$sending_emails_each];
|
1737 |
+
$queue_scheduled = WYSIJA::get_cron_schedule('queue');
|
1738 |
+
|
1739 |
+
$next_scheduled_queue = $queue_scheduled['next_schedule'];
|
1740 |
+
$running = $queue_scheduled['running'];
|
1741 |
+
|
1742 |
+
if ($running) {
|
1743 |
+
$helperToolbox = WYSIJA::get('toolbox', 'helper');
|
1744 |
+
$running = time() - $running;
|
1745 |
+
$running = $helperToolbox->duration_string($running, true, 4);
|
1746 |
+
}
|
1747 |
+
} else {
|
1748 |
+
$schedules = wp_get_schedules();
|
1749 |
+
$queue_frequency = $schedules[wp_get_schedule('wysija_cron_queue')]['interval'];
|
1750 |
+
$next_scheduled_queue = wp_next_scheduled('wysija_cron_queue');
|
1751 |
+
}
|
1752 |
+
|
1753 |
+
|
1754 |
+
|
1755 |
+
$status_sent_complete = array();
|
1756 |
+
if (isset($senttotal) && $senttotal) {
|
1757 |
+
foreach ($senttotal as $sentot) {
|
1758 |
+
if ($sentot) {
|
1759 |
+
$this->data['sent'][$sentot['email_id']]['total'] = $sentot['count'];
|
1760 |
+
$this->data['sent'][$sentot['email_id']]['to'] = $sentot['count'];
|
1761 |
+
} else {
|
1762 |
+
$this->data['sent'][$sentot['email_id']]['total'] = $this->data['sent'][$sentot['email_id']]['to'] = 0;
|
1763 |
+
}
|
1764 |
+
$this->data['sent'][$sentot['email_id']]['status'] = $sentot['status'];
|
1765 |
+
$this->data['sent'][$sentot['email_id']]['type'] = $sentot['type'];
|
1766 |
+
$this->data['sent'][$sentot['email_id']]['left'] = (int) $this->data['sent'][$sentot['email_id']]['total'] - (int) $this->data['sent'][$sentot['email_id']]['to'];
|
1767 |
+
}
|
1768 |
+
}
|
1769 |
+
|
1770 |
+
foreach ($statstotal as $sentot) {
|
1771 |
+
if (!isset($this->data['sent'][$sentot['email_id']])) {
|
1772 |
+
$this->data['sent'][$sentot['email_id']]['total'] = 0;
|
1773 |
+
$this->data['sent'][$sentot['email_id']]['to'] = 0;
|
1774 |
+
}
|
1775 |
+
$this->data['sent'][$sentot['email_id']]['total'] = $this->data['sent'][$sentot['email_id']]['total'] + $sentot['count'];
|
1776 |
+
$this->data['sent'][$sentot['email_id']]['left'] = (int) $this->data['sent'][$sentot['email_id']]['total'] - (int) $this->data['sent'][$sentot['email_id']]['to'];
|
1777 |
+
}
|
1778 |
+
|
1779 |
+
//$is_multisite=true;//PROD comment that line
|
1780 |
+
if ($is_multisite && $modelC->getValue('sending_method') == 'network') {
|
1781 |
+
$sending_emails_number = $modelC->getValue('ms_sending_emails_number');
|
1782 |
+
} else {
|
1783 |
+
$sending_emails_number = $modelC->getValue('sending_emails_number');
|
1784 |
+
}
|
1785 |
+
|
1786 |
+
if (isset($this->data['sent'])) {
|
1787 |
+
foreach ($this->data['sent'] as $key => &$camp) {
|
1788 |
+
if ($this->data['sent'][$key]['left'] > 0) {
|
1789 |
+
$cronsneeded = ceil($this->data['sent'][$key]['left'] / $sending_emails_number);
|
1790 |
+
$this->data['sent'][$key]['remaining_time'] = $cronsneeded * $queue_frequency;
|
1791 |
+
$this->data['sent'][$key]['running_for'] = $running;
|
1792 |
+
$this->data['sent'][$key]['next_batch'] = $next_scheduled_queue - time();
|
1793 |
+
$this->data['sent'][$key]['remaining_time'] = $this->data['sent'][$key]['remaining_time'] - ($queue_frequency) + $this->data['sent'][$key]['next_batch'];
|
1794 |
+
} else {
|
1795 |
+
if ((in_array($this->data['sent'][$key]['status'], array(1, 3, 99))) && $this->data['sent'][$key]['type'] == 1)
|
1796 |
+
$status_sent_complete[] = $key;
|
1797 |
+
}
|
1798 |
+
}
|
1799 |
+
}
|
1800 |
+
|
1801 |
+
|
1802 |
+
// status update to sent for the one that are sent
|
1803 |
+
if (count($status_sent_complete) > 0) {
|
1804 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
1805 |
+
$modelEmail->noCheck = true;
|
1806 |
+
$modelEmail->reset();
|
1807 |
+
$modelEmail->update(array('status' => 2), array('equal' => array('email_id' => $status_sent_complete)));
|
1808 |
+
}
|
1809 |
+
}
|
1810 |
+
}
|
1811 |
+
|
1812 |
+
$this->data['counts'] = array_reverse($counts);
|
1813 |
+
|
1814 |
+
/* regrouping all the data in the same array */
|
1815 |
+
foreach ($this->data['campaigns'] as &$campaign) {
|
1816 |
+
/* default key while we don't have the data */
|
1817 |
+
//TODO add data for stats about emails opened clicked etc
|
1818 |
+
$campaign["emails"] = 0;
|
1819 |
+
$campaign["opened"] = 0;
|
1820 |
+
$campaign["clicked"] = 0;
|
1821 |
+
|
1822 |
+
if ($userlists) {
|
1823 |
+
foreach ($userlists as $key => $userlist) {
|
1824 |
+
if ($campaign["campaign_id"] == $userlist["campaign_id"] && isset($lists[$userlist["list_id"]])) {
|
1825 |
+
if (!isset($campaign["lists"]))
|
1826 |
+
$campaign["lists"] = $lists[$userlist["list_id"]]["name"];
|
1827 |
+
else
|
1828 |
+
$campaign["lists"].=", " . $lists[$userlist["list_id"]]["name"];
|
1829 |
+
}
|
1830 |
+
}
|
1831 |
+
}
|
1832 |
+
if (isset($campaign["lists"]) && !$campaign["lists"])
|
1833 |
+
unset($campaign["lists"]);
|
1834 |
+
|
1835 |
+
if (((isset($campaign['params']['schedule']['isscheduled']) ||
|
1836 |
+
($campaign['type'] == 2 && isset($campaign['params']['autonl']['event']) && in_array($campaign['params']['autonl']['event'], array('new-articles'/* ,'subs-2-nl' */)))
|
1837 |
+
) && $campaign['status'] != 2 && !isset($campaign["lists"])) || ($campaign['type'] == 2 && isset($campaign['params']['autonl']['event']) && in_array($campaign['params']['autonl']['event'], array('subs-2-nl')) && $campaign['status'] != 2 && (!isset($campaign['params']['autonl']['subscribetolist']) || !isset($lists[$campaign['params']['autonl']['subscribetolist']]) ))
|
1838 |
+
) {
|
1839 |
+
$campaign['classRow'] = " listmissing ";
|
1840 |
+
$campaign['msgListEdit'] = '<strong>' . __('The list has been deleted.', WYSIJA) . '</strong>';
|
1841 |
+
$campaign['msgSendSuspended'] = '<strong>' . __('Sending suspended.', WYSIJA) . '</strong>';
|
1842 |
+
}
|
1843 |
+
}
|
1844 |
+
|
1845 |
+
$this->dataAutoNl();
|
1846 |
+
if (!$this->data['campaigns']) {
|
1847 |
+
$this->notice(__('There are no newsletters.', WYSIJA));
|
1848 |
+
}
|
1849 |
+
}
|
1850 |
+
|
1851 |
+
function setviewStatsfilter() {
|
1852 |
+
/* get the filters */
|
1853 |
+
$this->searchable = array("email", "firstname", "lastname");
|
1854 |
+
$this->filters = array();
|
1855 |
+
if (isset($_REQUEST['search']) && $_REQUEST['search']) {
|
1856 |
+
$this->filters["like"] = array();
|
1857 |
+
foreach ($this->searchable as $field)
|
1858 |
+
$this->filters["like"][$field] = $_REQUEST['search'];
|
1859 |
+
}
|
1860 |
+
$this->tableQuery = 'email_user_stat';
|
1861 |
+
$this->statusemail = 'B.status as umstatus';
|
1862 |
+
if (isset($_REQUEST['link_filter']) && $_REQUEST['link_filter']) {
|
1863 |
+
switch ($_REQUEST['link_filter']) {
|
1864 |
+
case 'inqueue':
|
1865 |
+
$this->tableQuery = 'queue';
|
1866 |
+
$this->statusemail = '-2 as umstatus';
|
1867 |
+
break;
|
1868 |
+
case 'sent':
|
1869 |
+
$this->filters['equal'] = array('B.status' => 0);
|
1870 |
+
break;
|
1871 |
+
case 'bounced':
|
1872 |
+
$this->filters['equal'] = array('B.status' => -1);
|
1873 |
+
break;
|
1874 |
+
case 'opened':
|
1875 |
+
$this->filters['equal'] = array('B.status' => 1);
|
1876 |
+
break;
|
1877 |
+
case 'clicked':
|
1878 |
+
$this->filters['equal'] = array('B.status' => 2);
|
1879 |
+
break;
|
1880 |
+
case 'unsubscribe':
|
1881 |
+
$this->filters['equal'] = array('B.status' => 3);
|
1882 |
+
break;
|
1883 |
+
case 'notsent':
|
1884 |
+
$this->filters['equal'] = array('B.status' => -2);
|
1885 |
+
break;
|
1886 |
+
}
|
1887 |
+
}
|
1888 |
+
// filter by url id
|
1889 |
+
if (isset($_REQUEST['url_id']) && (int) $_REQUEST['url_id'] > 0) {
|
1890 |
+
$this->tableQuery = 'email_user_url';
|
1891 |
+
$this->filters['equal'] = array('B.url_id' => (int) $_REQUEST['url_id']);
|
1892 |
+
$this->statusemail = '2 as umstatus'; //by default, when filter by url_id, all subscribers had clicked
|
1893 |
+
}
|
1894 |
+
}
|
1895 |
+
|
1896 |
+
function viewstats() {
|
1897 |
+
$this->js[] = 'wysija-admin-list';
|
1898 |
+
$this->js[] = 'wysija-charts';
|
1899 |
+
$this->viewShow = 'viewstats';
|
1900 |
+
|
1901 |
+
$this->modelObj = WYSIJA::get("email", "model");
|
1902 |
+
$this->modelObj->limitON = false;
|
1903 |
+
|
1904 |
+
$email_object = $this->modelObj->getOne(false, array("email_id" => $_REQUEST['id']));
|
1905 |
+
$this->viewObj->model = $this->modelObj;
|
1906 |
+
$this->viewObj->namecampaign = $email_object['subject'];
|
1907 |
+
$this->viewObj->title = sprintf(__('Stats : %1$s', WYSIJA), $email_object['subject']);
|
1908 |
+
|
1909 |
+
$modelObjCamp = WYSIJA::get("campaign", "model");
|
1910 |
+
$limit_pp = false;
|
1911 |
+
if (isset($modelObjCamp->limit_pp))
|
1912 |
+
$limit_pp = $modelObjCamp->limit_pp;
|
1913 |
+
$modelObjCamp->limitON = false;
|
1914 |
+
$campaign = $modelObjCamp->getOne(false, array("campaign_id" => $email_object['campaign_id']));
|
1915 |
+
|
1916 |
+
|
1917 |
+
$this->setviewStatsfilter();
|
1918 |
+
|
1919 |
+
$this->modelObj->reset();
|
1920 |
+
$this->modelObj->noCheck = true;
|
1921 |
+
|
1922 |
+
/* 0 - counting request */
|
1923 |
+
$queryCmmonStart = 'SELECT count(distinct B.user_id) as users FROM `[wysija]user` as A';
|
1924 |
+
$queryCmmonStart.=' LEFT JOIN `[wysija]' . $this->tableQuery . '` as B on A.user_id=B.user_id';
|
1925 |
+
|
1926 |
+
/* all the counts query */
|
1927 |
+
$query = "SELECT count(user_id) as users, status FROM `[wysija]email_user_stat` as A
|
1928 |
+
WHERE A.email_id=" . $email_object['email_id'] . " GROUP BY status";
|
1929 |
+
$countss = $this->modelObj->query("get_res", $query, ARRAY_A);
|
1930 |
+
|
1931 |
+
/* we also count what is in the queue */
|
1932 |
+
$query = "SELECT count(user_id) as users FROM `[wysija]queue` as A
|
1933 |
+
WHERE A.email_id=" . $email_object['email_id'];
|
1934 |
+
$countss[-2]['status'] = -3;
|
1935 |
+
$countss[-2]['users'] = $this->modelObj->count($query, 'users');
|
1936 |
+
|
1937 |
+
$counts = array();
|
1938 |
+
$truetotal = $total = 0;
|
1939 |
+
|
1940 |
+
foreach ($countss as $count) {
|
1941 |
+
switch ($count['status']) {
|
1942 |
+
case "-3":
|
1943 |
+
$type = 'inqueue';
|
1944 |
+
break;
|
1945 |
+
case "-2":
|
1946 |
+
$type = 'notsent';
|
1947 |
+
break;
|
1948 |
+
case "-1":
|
1949 |
+
$type = 'bounced';
|
1950 |
+
break;
|
1951 |
+
case "0":
|
1952 |
+
$type = 'sent';
|
1953 |
+
break;
|
1954 |
+
case "1":
|
1955 |
+
$type = 'opened';
|
1956 |
+
break;
|
1957 |
+
case "2":
|
1958 |
+
$type = 'clicked';
|
1959 |
+
break;
|
1960 |
+
case "3":
|
1961 |
+
$type = 'unsubscribe';
|
1962 |
+
break;
|
1963 |
+
}
|
1964 |
+
if ($count['status'] != "-2")
|
1965 |
+
$total = $total + $count['users'];
|
1966 |
+
$truetotal = $truetotal + $count['users'];
|
1967 |
+
$counts[$type] = $count['users'];
|
1968 |
+
}
|
1969 |
+
|
1970 |
+
$counts['allsent'] = $total;
|
1971 |
+
$counts['all'] = $truetotal;
|
1972 |
+
|
1973 |
+
$this->modelObj->reset();
|
1974 |
+
$this->filters['equal']["B.email_id"] = $email_object['email_id'];
|
1975 |
+
|
1976 |
+
$this->modelObj->noCheck = true;
|
1977 |
+
if ($this->filters)
|
1978 |
+
$this->modelObj->setConditions($this->filters);
|
1979 |
+
|
1980 |
+
//$this->modelObj->setConditions(array("equal"=>array("B.email_id"=>$emailObj['email_id'])));
|
1981 |
+
|
1982 |
+
/* 1 - subscriber request */
|
1983 |
+
$query = 'SELECT A.user_id, A.firstname, A.lastname,A.status as ustatus,' . $this->statusemail . ' , A.email, B.* FROM `[wysija]user` as A';
|
1984 |
+
$query.=' LEFT JOIN `[wysija]' . $this->tableQuery . '` as B on A.user_id=B.user_id';
|
1985 |
+
$queryFinal = $this->modelObj->makeWhere();
|
1986 |
+
|
1987 |
+
/* without filter we already have the total number of subscribers */
|
1988 |
+
if ($this->filters)
|
1989 |
+
$this->modelObj->countRows = $this->modelObj->count($queryCmmonStart . $queryFinal, 'users');
|
1990 |
+
else
|
1991 |
+
$this->modelObj->countRows = $counts['all'];
|
1992 |
+
|
1993 |
+
$orderby = " ORDER BY ";
|
1994 |
+
/**
|
1995 |
+
* Until now, we have
|
1996 |
+
* - 3 possible values of $this->tableQuery (queue, email_user_url, email_user_stat), set by $this->setviewStatsfilter()
|
1997 |
+
* - 2 possible values of $_REQUEST['orderby']
|
1998 |
+
* => 3x2 = 6 cases
|
1999 |
+
*/
|
2000 |
+
if (isset($_REQUEST['orderby'])) {
|
2001 |
+
switch ($this->tableQuery) {
|
2002 |
+
case 'email_user_url':
|
2003 |
+
case 'email_user_stat':
|
2004 |
+
$orderby .= 'B.' . $_REQUEST['orderby'] . " " . $_REQUEST['ordert'];
|
2005 |
+
break;
|
2006 |
+
|
2007 |
+
case 'queue':
|
2008 |
+
default:
|
2009 |
+
$orderby .= 'A.user_id DESC';
|
2010 |
+
break;
|
2011 |
+
}
|
2012 |
+
} else {
|
2013 |
+
switch ($this->tableQuery) {
|
2014 |
+
case 'email_user_url':
|
2015 |
+
$orderby .= 'B.clicked_at DESC, B.number_clicked DESC'; // by default, sort by last clicked and biggest hit
|
2016 |
+
break;
|
2017 |
+
|
2018 |
+
case 'email_user_stat':
|
2019 |
+
$orderby .= 'B.opened_at DESC, B.status DESC'; // by default, sort by last open and its staus value
|
2020 |
+
break;
|
2021 |
+
|
2022 |
+
case 'queue':
|
2023 |
+
default:
|
2024 |
+
$orderby .= 'A.user_id DESC';
|
2025 |
+
break;
|
2026 |
+
}
|
2027 |
+
}
|
2028 |
+
$this->data['tableQuery'] = $this->tableQuery;
|
2029 |
+
$this->modelObj->limitON = true;
|
2030 |
+
$this->data['subscribers'] = $this->modelObj->getResults($query . $queryFinal . " GROUP BY A.user_id" . $orderby . $this->modelObj->setLimit(0, (int)$limit_pp));
|
2031 |
+
$this->modelObj->reset();
|
2032 |
+
|
2033 |
+
/* make the data object for the listing view */
|
2034 |
+
$modelList = WYSIJA::get("list", "model");
|
2035 |
+
|
2036 |
+
/* 2 - list request */
|
2037 |
+
$query = "SELECT A.list_id, A.name,A.is_enabled, count( B.user_id ) AS users FROM `[wysija]" . $modelList->table_name . "` as A";
|
2038 |
+
$query.=" LEFT JOIN `[wysija]user_list` as B on A.list_id = B.list_id";
|
2039 |
+
$query.=" GROUP BY A.list_id";
|
2040 |
+
$listsDB = $modelList->getResults($query);
|
2041 |
+
|
2042 |
+
$lists = array();
|
2043 |
+
foreach ($listsDB as $listobj) {
|
2044 |
+
$lists[$listobj["list_id"]] = $listobj;
|
2045 |
+
}
|
2046 |
+
|
2047 |
+
$listsDB = null;
|
2048 |
+
|
2049 |
+
$user_ids = array();
|
2050 |
+
foreach ($this->data['subscribers'] as $subscriber) {
|
2051 |
+
$user_ids[] = $subscriber['user_id'];
|
2052 |
+
}
|
2053 |
+
|
2054 |
+
/* 3 - user_list request */
|
2055 |
+
if ($user_ids) {
|
2056 |
+
$modeluList = WYSIJA::get("user_list", "model");
|
2057 |
+
$userlists = $modeluList->get(array("list_id", "user_id"), array("user_id" => $user_ids));
|
2058 |
+
}
|
2059 |
+
|
2060 |
+
|
2061 |
+
$this->data['lists'] = $lists;
|
2062 |
+
$this->data['counts'] = array_reverse($counts);
|
2063 |
+
|
2064 |
+
/* regrouping all the data in the same array */
|
2065 |
+
foreach ($this->data['subscribers'] as $keysus => $subscriber) {
|
2066 |
+
/* default key while we don't have the data */
|
2067 |
+
//TODO add data for stats about emails opened clicked etc
|
2068 |
+
$this->data['subscribers'][$keysus]["emails"] = 0;
|
2069 |
+
$this->data['subscribers'][$keysus]["opened"] = 0;
|
2070 |
+
$this->data['subscribers'][$keysus]["clicked"] = 0;
|
2071 |
+
|
2072 |
+
if ($userlists) {
|
2073 |
+
foreach ($userlists as $key => $userlist) {
|
2074 |
+
if ($subscriber["user_id"] == $userlist["user_id"] && isset($lists[$userlist["list_id"]])) {
|
2075 |
+
if (!isset($this->data['subscribers'][$keysus]["lists"]))
|
2076 |
+
$this->data['subscribers'][$keysus]["lists"] = $lists[$userlist["list_id"]]["name"];
|
2077 |
+
else
|
2078 |
+
$this->data['subscribers'][$keysus]["lists"].=", " . $lists[$userlist["list_id"]]["name"];
|
2079 |
+
}
|
2080 |
+
}
|
2081 |
+
}
|
2082 |
+
}
|
2083 |
+
|
2084 |
+
$this->data['email'] = $email_object;
|
2085 |
+
|
2086 |
+
if (!$this->data['subscribers']) {
|
2087 |
+
$this->notice(__("Your request can't retrieve any subscribers. Change your filters!", WYSIJA));
|
2088 |
+
}
|
2089 |
+
|
2090 |
+
// execute hooks
|
2091 |
+
$hook_params = array(
|
2092 |
+
'email_id' => $_REQUEST['id'],
|
2093 |
+
'email_object' => $email_object
|
2094 |
+
);
|
2095 |
+
|
2096 |
+
$this->data['hooks']['hook_newsletter_top'] = apply_filters('hook_newsletter_top', WYSIJA_module::execute_hook('hook_newsletter_top', $hook_params), $hook_params);
|
2097 |
+
$this->data['hooks']['hook_newsletter_bottom'] = apply_filters('hook_newsletter_bottom', WYSIJA_module::execute_hook('hook_newsletter_bottom', $hook_params), $hook_params);
|
2098 |
+
}
|
2099 |
+
|
2100 |
+
function getListSubscriberQry($selectcolumns) {
|
2101 |
+
$this->modelObj = WYSIJA::get("email", "model");
|
2102 |
+
$this->emailObj = $this->modelObj->getOne(false, array('email_id' => $_REQUEST['id']));
|
2103 |
+
|
2104 |
+
/* use the filter if there is */
|
2105 |
+
$this->setviewStatsfilter();
|
2106 |
+
|
2107 |
+
if ($selectcolumns == "B.user_id") {
|
2108 |
+
//unset($this->filters["like"]);
|
2109 |
+
}
|
2110 |
+
|
2111 |
+
$this->filters['equal']["B.email_id"] = $this->emailObj['email_id'];
|
2112 |
+
$this->modelObj->noCheck = true;
|
2113 |
+
if ($this->filters)
|
2114 |
+
$this->modelObj->setConditions($this->filters);
|
2115 |
+
|
2116 |
+
/* select insert all the subscribers from that campaign into user_list */
|
2117 |
+
if ($selectcolumns == "B.user_id") {
|
2118 |
+
$query = "SELECT $selectcolumns FROM `[wysija]" . $this->tableQuery . "` as B";
|
2119 |
+
$query.=$this->modelObj->makeWhere();
|
2120 |
+
} else {
|
2121 |
+
$query = "SELECT $selectcolumns FROM `[wysija]user` as A";
|
2122 |
+
$query.=" LEFT JOIN `[wysija]" . $this->tableQuery . "` as B on A.user_id=B.user_id";
|
2123 |
+
$query.=$this->modelObj->makeWhere();
|
2124 |
+
}
|
2125 |
+
|
2126 |
+
return $query;
|
2127 |
+
}
|
2128 |
+
|
2129 |
+
function createnewlist() {
|
2130 |
+
/* get the email subject */
|
2131 |
+
$emailModel = WYSIJA::get('email', 'model');
|
2132 |
+
$email = $emailModel->getOne(array('subject'), array('email_id' => $_REQUEST['id']));
|
2133 |
+
|
2134 |
+
$this->modelObj->reset();
|
2135 |
+
|
2136 |
+
/* set the name of the new list */
|
2137 |
+
$prefix = "";
|
2138 |
+
if (isset($_REQUEST['link_filter']))
|
2139 |
+
$prefix = ' (' . $this->viewObj->getTransStatusEmail($_REQUEST['link_filter']) . ')';
|
2140 |
+
$listname = sprintf(__('Segment of %1$s', WYSIJA), $email['subject'] . $prefix);
|
2141 |
+
|
2142 |
+
/* insert new list */
|
2143 |
+
$modelL = WYSIJA::get('list', 'model');
|
2144 |
+
$listid = $modelL->insert(array('is_enabled' => 1, 'name' => $listname, 'description' => __('List created based on a newsletter segment.', WYSIJA)));
|
2145 |
+
|
2146 |
+
/* get list of subscribers filtered or not */
|
2147 |
+
$query = $this->getListSubscriberQry($listid . ', A.user_id, ' . time() . ', 0');
|
2148 |
+
|
2149 |
+
$query2 = 'INSERT INTO `[wysija]user_list` (`list_id`,`user_id`,`sub_date`,`unsub_date`) ' . $query;
|
2150 |
+
|
2151 |
+
$this->modelObj->query($query2);
|
2152 |
+
|
2153 |
+
$this->notice(sprintf(__('A new list "%1$s" has been created out of this segment.', WYSIJA), $listname));
|
2154 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=viewstats&id=' . $_REQUEST['id']);
|
2155 |
+
}
|
2156 |
+
|
2157 |
+
function unsubscribeall() {
|
2158 |
+
// Update user_list, set unsubdate and sub_date
|
2159 |
+
$query = $this->getListSubscriberQry('B.user_id');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2160 |
$query1 = "
|
2161 |
+
UPDATE `[wysija]user_list`
|
2162 |
+
SET
|
2163 |
`unsub_date` = ".time().",
|
2164 |
`sub_date` = 0
|
2165 |
+
WHERE
|
2166 |
`user_id` IN ($query)
|
2167 |
AND `list_id` NOT IN (SELECT `list_id` FROM `[wysija]list` WHERE `is_enabled` < 1)
|
2168 |
";
|
2169 |
+
$this->modelObj->query($query1);
|
2170 |
+
|
2171 |
+
// unsubscribe from user where select from email_user_stat
|
2172 |
+
$query2 = "UPDATE `[wysija]user` SET `status`=-1 WHERE `user_id` IN ($query)";
|
2173 |
+
$this->modelObj->query($query2);
|
2174 |
+
|
2175 |
+
$this->notice(__('The segment has been unbsubscribed from all the lists.', WYSIJA));
|
2176 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=viewstats&id=' . $_REQUEST['id']);
|
2177 |
+
}
|
2178 |
+
|
2179 |
+
function sendconfirmation() {
|
2180 |
+
//delete from user_lists where select from email_user_stat
|
2181 |
+
$query = $this->getListSubscriberQry('B.user_id ');
|
2182 |
+
|
2183 |
+
$user_ids = $this->modelObj->query('get_res', $query);
|
2184 |
+
|
2185 |
+
$uids = array();
|
2186 |
+
foreach ($user_ids as $data) {
|
2187 |
+
$uids[] = $data['user_id'];
|
2188 |
+
}
|
2189 |
+
|
2190 |
+
$helperUser = WYSIJA::get('user', 'helper');
|
2191 |
+
$helperUser->sendConfirmationEmail($uids);
|
2192 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=viewstats&id=' . $_REQUEST['id']);
|
2193 |
+
}
|
2194 |
+
|
2195 |
+
function removequeue() {
|
2196 |
+
/* delete from queue where select from email_user_stat */
|
2197 |
+
$query = $this->getListSubscriberQry('B.user_id');
|
2198 |
+
$query2 = "DELETE FROM `[wysija]queue` where user_id IN ($query) AND email_id=" . $this->emailObj['email_id'];
|
2199 |
+
$this->modelObj->query($query2);
|
2200 |
+
|
2201 |
+
$this->notice(__('The segment has been removed from the queue of this newsletter.', WYSIJA));
|
2202 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=viewstats&id=' . $_REQUEST['id']);
|
2203 |
+
}
|
2204 |
+
|
2205 |
+
function export() {
|
2206 |
+
/* select from email_user_stat left join user */
|
2207 |
+
$query = $this->getListSubscriberQry('B.user_id');
|
2208 |
+
$result = $this->modelObj->query('get_res', $query);
|
2209 |
+
$user_ids = array();
|
2210 |
+
foreach ($result as $user)
|
2211 |
+
$user_ids[] = $user['user_id'];
|
2212 |
+
|
2213 |
+
$fileHelp = WYSIJA::get('file', 'helper');
|
2214 |
+
$tempfilename = $fileHelp->temp(implode(',', $user_ids), 'export_userids', '.txt');
|
2215 |
+
|
2216 |
+
//$this->redirect("admin.php?page=wysija_campaigns&action=viewstats&id=".$_REQUEST['id']."&user_ids=".serialize($result));
|
2217 |
+
$this->redirect('admin.php?page=wysija_subscribers&action=exportcampaign&camp_id=' . $_REQUEST['id'] . '&file_name=' . base64_encode($tempfilename['path']));
|
2218 |
+
}
|
2219 |
+
|
2220 |
+
function unsubscribelist($data) {
|
2221 |
+
|
2222 |
+
$modelL = WYSIJA::get('list', 'model');
|
2223 |
+
$list = $modelL->getOne(false, array('list_id' => $data['listid']));
|
2224 |
+
if ($list['is_enabled']) {
|
2225 |
+
/* delete from user_lists where select from email_user_stat */
|
2226 |
+
$query = $this->getListSubscriberQry("B.user_id");
|
2227 |
+
$query2 = "DELETE FROM `[wysija]user_list` where user_id IN ($query) and list_id=" . $data['listid'];
|
2228 |
+
$this->modelObj->query($query2);
|
2229 |
+
|
2230 |
+
$this->notice(sprintf(__('The segment has been unbsubscribed from the list "%1$s".', WYSIJA), $list['name']));
|
2231 |
+
} else {
|
2232 |
+
$this->notice(sprintf(__('The segment cannot be unbsubscribed from an [IMPORT] list.', WYSIJA), $list['name']));
|
2233 |
+
}
|
2234 |
+
|
2235 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=viewstats&id=' . $_REQUEST['id']);
|
2236 |
+
}
|
2237 |
+
|
2238 |
+
function articles() {
|
2239 |
+
$this->iframeTabs = array('articles' => __("Post Selection", WYSIJA));
|
2240 |
+
|
2241 |
+
// required js files
|
2242 |
+
$this->js[] = 'wysija-admin-ajax';
|
2243 |
+
$this->js[] = 'wysija-base-script-64';
|
2244 |
+
$this->js[] = 'wysija-scriptaculous';
|
2245 |
+
$this->js[] = 'wysija-colorpicker';
|
2246 |
+
|
2247 |
+
// translations
|
2248 |
+
$this->jsTrans['show_advanced'] = __('Display and insert options', WYSIJA);
|
2249 |
+
$this->jsTrans['hide_advanced'] = __('Back to selection', WYSIJA);
|
2250 |
+
$this->jsTrans['loading_results'] = __('Loading results...', WYSIJA);
|
2251 |
+
$this->jsTrans['inserting_selection'] = __('Inserting selected articles...', WYSIJA);
|
2252 |
+
$this->jsTrans['post_selected'] = __('selected', WYSIJA);
|
2253 |
+
|
2254 |
+
// default tab in popup (this needs to be removed at some point)
|
2255 |
+
$_GET['tab'] = 'articles';
|
2256 |
+
|
2257 |
+
// get parameters
|
2258 |
+
$params = array(
|
2259 |
+
'category_ids' => null,
|
2260 |
+
'category' => null,
|
2261 |
+
'title_tag' => 'h2',
|
2262 |
+
'title_alignment' => 'left',
|
2263 |
+
'title_position' => 'inside',
|
2264 |
+
'image_alignment' => 'alternate',
|
2265 |
+
'image_width' => 325,
|
2266 |
+
'post_content' => 'excerpt',
|
2267 |
+
'readmore' => __('Read more.', WYSIJA),
|
2268 |
+
'show_divider' => 'yes',
|
2269 |
+
'post_limit' => 5,
|
2270 |
+
'post_type' => 'post',
|
2271 |
+
'author_show' => 'no',
|
2272 |
+
'author_label' => __('Author:', WYSIJA),
|
2273 |
+
'category_show' => 'no',
|
2274 |
+
'category_label' => __('Categories:', WYSIJA),
|
2275 |
+
'nopost_message' => __('Latest content already sent.', WYSIJA),
|
2276 |
+
'bgcolor1' => null,
|
2277 |
+
'bgcolor2' => null,
|
2278 |
+
'sort_by' => 'newest'
|
2279 |
+
);
|
2280 |
+
|
2281 |
+
// check if GET parameters are specified
|
2282 |
+
foreach($params as $key => $value) {
|
2283 |
+
if(array_key_exists($key, $_GET)) {
|
2284 |
+
switch($key) {
|
2285 |
+
case 'autopost_count':
|
2286 |
+
$params[$key] = (int)$_GET[$key];
|
2287 |
+
break;
|
2288 |
+
case 'readmore':
|
2289 |
+
case 'nopost_message':
|
2290 |
+
$params[$key] = base64_decode($_GET[$key]);
|
2291 |
+
break;
|
2292 |
+
default:
|
2293 |
+
$params[$key] = $_GET[$key];
|
2294 |
+
}
|
2295 |
+
}
|
2296 |
+
}
|
2297 |
+
|
2298 |
+
$model_config = WYSIJA::get('config', 'model');
|
2299 |
+
$insert_post_parameters = $model_config->getValue('insert_post_parameters');
|
2300 |
+
$helper_wj_engine = WYSIJA::get('wj_engine', 'helper');
|
2301 |
+
|
2302 |
+
if($insert_post_parameters !== false) {
|
2303 |
+
// there are user params
|
2304 |
+
$params = $helper_wj_engine->decodeParameters(array_merge($params, $insert_post_parameters));
|
2305 |
+
}
|
2306 |
+
|
2307 |
+
// get autopost count
|
2308 |
+
$this->data['autopost_count'] = (array_key_exists('autopost_count', $_GET)) ? (int) $_GET['autopost_count'] : 0;
|
2309 |
+
|
2310 |
+
// get autopost type (single or multiple)
|
2311 |
+
$this->data['autopost_type'] = (array_key_exists('autopost_type', $_GET)) ? $_GET['autopost_type'] : 'multiple';
|
2312 |
+
|
2313 |
+
// if only one group of post can be added, change default alignment to left
|
2314 |
+
if($this->data['autopost_type'] === 'single' && $params['image_alignment'] === 'alternate') {
|
2315 |
+
$params['image_alignment'] = 'left';
|
2316 |
+
}
|
2317 |
+
|
2318 |
+
// get post categories (even when there's no post)
|
2319 |
+
$post_categories = get_categories(array('hide_empty' => 0));
|
2320 |
+
$categories = array();
|
2321 |
+
foreach ($post_categories as $category) {
|
2322 |
+
$categories[] = array('id' => $category->cat_ID, 'name' => $category->name);
|
2323 |
+
}
|
2324 |
+
$this->data['categories'] = $categories;
|
2325 |
+
|
2326 |
+
// max number of posts
|
2327 |
+
$this->data['post_limits'] = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 50);
|
2328 |
+
|
2329 |
+
$this->data['params'] = $params;
|
2330 |
+
|
2331 |
+
return $this->popupContent();
|
2332 |
+
}
|
2333 |
+
|
2334 |
+
function themeupload() {
|
2335 |
+
$helperNumbers = WYSIJA::get('numbers', 'helper');
|
2336 |
+
$bytes = $helperNumbers->get_max_file_upload();
|
2337 |
+
|
2338 |
+
if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > $bytes['maxbytes']) {
|
2339 |
+
if (isset($_FILES['my-theme']['name']) && $_FILES['my-theme']['name']) {
|
2340 |
+
$filename = $_FILES['my-theme']['name'];
|
2341 |
+
} else {
|
2342 |
+
$filename = "";
|
2343 |
+
}
|
2344 |
+
|
2345 |
+
$this->error(sprintf(__('Upload error, file %1$s is too large! (MAX:%2$s)', WYSIJA), $filename, $bytes['maxmegas']), true);
|
2346 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=themes');
|
2347 |
+
|
2348 |
+
return false;
|
2349 |
+
}
|
2350 |
+
|
2351 |
+
|
2352 |
+
$ZipfileResult = trim(file_get_contents($_FILES['my-theme']['tmp_name']));
|
2353 |
+
|
2354 |
+
$themesHelp = WYSIJA::get('themes', 'helper');
|
2355 |
+
$result = $themesHelp->installTheme($_FILES['my-theme']['tmp_name'], true);
|
2356 |
+
$this->redirect('admin.php?page=wysija_campaigns&action=themes&reload=1');
|
2357 |
+
|
2358 |
+
return true;
|
2359 |
+
}
|
2360 |
+
|
2361 |
+
function themes() {
|
2362 |
+
$this->iframeTabs = array('themes' => __('Install Themes', WYSIJA));
|
2363 |
+
$this->js[] = 'wysija-admin-ajax';
|
2364 |
+
$this->js[] = 'wysija-base-script-64';
|
2365 |
+
$this->jsTrans['viewinfos'] = __('Details & PSD', WYSIJA);
|
2366 |
+
$this->jsTrans['viewback'] = __('<< Back', WYSIJA);
|
2367 |
+
$this->jsTrans['install'] = __('Download', WYSIJA);
|
2368 |
+
$this->jsTrans['reinstall'] = __('Reinstall', WYSIJA);
|
2369 |
+
$this->jsTrans['premiumonly'] = __('Premium', WYSIJA);
|
2370 |
+
|
2371 |
+
$model_config = WYSIJA::get('config', 'model');
|
2372 |
+
//change the translation of the button when it's premium
|
2373 |
+
if ($model_config->getValue('premium_key'))
|
2374 |
+
$this->jsTrans['ispremium'] = 1;
|
2375 |
+
else
|
2376 |
+
$this->jsTrans['ispremium'] = 0;
|
2377 |
+
|
2378 |
+
$this->jsTrans['premiumfiles'] = __('Photoshop file available as part of [link]Premium features[/link].', WYSIJA);
|
2379 |
+
|
2380 |
+
$helper_licence = WYSIJA::get('licence', 'helper');
|
2381 |
+
$url_checkout = $helper_licence->get_url_checkout('themes');
|
2382 |
+
$this->jsTrans['premiumfiles'] = str_replace(array('[link]', '[/link]'), array('<a href="' . $url_checkout . '" target="_blank" >', '</a>'), $this->jsTrans['premiumfiles']);
|
2383 |
+
|
2384 |
+
$this->jsTrans['showallthemes'] = __('Show all themes', WYSIJA);
|
2385 |
+
$this->jsTrans['totalvotes'] = __('(%1$s votes)', WYSIJA);
|
2386 |
+
$this->jsTrans['voterecorded'] = __("Your vote has been recorded.", WYSIJA);
|
2387 |
+
$this->jsTrans['votenotrecorded'] = __("Your vote could not be recorded.", WYSIJA);
|
2388 |
+
$this->jsTrans['reinstallwarning'] = __('Watch out! If you reinstall this theme all the files which are in the folder:/wp-content/uploads/wysija/themes/%1$s will be overwritten. Are you sure you want to reinstall?', WYSIJA);
|
2389 |
+
$this->jsTrans['errorconnecting'] = __("We were unable to contact the API, the site may be down. Please try again later.", WYSIJA);
|
2390 |
+
|
2391 |
+
$this->jsTrans['viewallthemes'] = __('View all themes by %1$s', WYSIJA);
|
2392 |
+
$this->jsTrans['downloadpsd'] = __("Download original Photoshop file", WYSIJA);
|
2393 |
+
$this->jsTrans['downloadzip'] = __("Download as .zip", WYSIJA);
|
2394 |
+
$this->jsTrans['viewauthorsite'] = __("View author's website", WYSIJA);
|
2395 |
+
$this->jsTrans['stars'] = __('Average rating: %1$s', WYSIJA);
|
2396 |
+
$this->jsTrans['starsyr'] = __('My rating: %1$s', WYSIJA);
|
2397 |
+
$this->jsTrans['downloads'] = __('Downloads: %1$s', WYSIJA);
|
2398 |
+
$this->jsTrans['tags'] = __('Tags: %1$s', WYSIJA);
|
2399 |
+
$this->jsTrans['lastupdated'] = __('Last updated: %1$s', WYSIJA);
|
2400 |
+
$this->jsTrans['includes'] = __('Includes: %1$s', WYSIJA);
|
2401 |
+
|
2402 |
+
$helper_themes = WYSIJA::get('themes', 'helper');
|
2403 |
+
|
2404 |
+
$this->jsTrans['installedthemes'] = $helper_themes->getInstalled();
|
2405 |
+
|
2406 |
+
$url = admin_url('admin.php');
|
2407 |
+
$helper_toolbox = WYSIJA::get("toolbox", "helper");
|
2408 |
+
$domain_name = $helper_toolbox->_make_domain_name($url);
|
2409 |
+
$this->jsTrans['domainname'] = $domain_name;
|
2410 |
+
|
2411 |
+
$_GET['tab'] = 'themes';
|
2412 |
+
|
2413 |
+
return $this->popupContent();
|
2414 |
+
}
|
2415 |
+
|
2416 |
+
function bookmarks() {
|
2417 |
+
$this->iframeTabs = array('bookmarks' => __('Bookmarks Selection', WYSIJA));
|
2418 |
+
$this->js[] = 'wysija-admin-ajax';
|
2419 |
+
|
2420 |
+
$_GET['tab'] = 'bookmarks';
|
2421 |
+
|
2422 |
+
$networks = array(
|
2423 |
+
'facebook' => array(
|
2424 |
+
'label' => 'Facebook',
|
2425 |
+
'url' => null,
|
2426 |
+
'placeholder' => 'https://www.facebook.com/mailpoetplugin'
|
2427 |
+
),
|
2428 |
+
'twitter' => array(
|
2429 |
+
'label' => 'Twitter',
|
2430 |
+
'url' => null,
|
2431 |
+
'placeholder' => 'http://www.twitter.com/mail_poet'
|
2432 |
+
),
|
2433 |
+
'google' => array(
|
2434 |
+
'label' => 'Google+',
|
2435 |
+
'url' => null,
|
2436 |
+
'placeholder' => null
|
2437 |
+
),
|
2438 |
+
'linkedin' => array(
|
2439 |
+
'label' => 'LinkedIn',
|
2440 |
+
'url' => null,
|
2441 |
+
'placeholder' => null
|
2442 |
+
)
|
2443 |
+
);
|
2444 |
+
|
2445 |
+
// get networks' url from config
|
2446 |
+
$model_config = WYSIJA::get('config', 'model');
|
2447 |
+
$urls = $model_config->getValue('social_bookmarks');
|
2448 |
+
|
2449 |
+
// set url from config for each network if specified
|
2450 |
+
foreach ($networks as $network => $values) {
|
2451 |
+
if (isset($urls[$network]) and strlen(trim($urls[$network])) > 0) {
|
2452 |
+
$networks[$network]['url'] = $urls[$network];
|
2453 |
+
}
|
2454 |
+
}
|
2455 |
+
|
2456 |
+
$this->data['networks'] = $networks;
|
2457 |
+
$this->data['size'] = 'medium';
|
2458 |
+
$this->data['theme'] = isset($_REQUEST['theme']) ? $_REQUEST['theme'] : 'default';
|
2459 |
+
|
2460 |
+
return $this->popupContent();
|
2461 |
+
}
|
2462 |
+
|
2463 |
+
function dividers() {
|
2464 |
+
$this->iframeTabs = array('dividers' => __("Dividers Selection", WYSIJA));
|
2465 |
+
$this->js[] = 'wysija-admin-ajax';
|
2466 |
+
$this->js[] = 'wysija-base-script-64';
|
2467 |
+
|
2468 |
+
$_GET['tab'] = 'dividers';
|
2469 |
+
|
2470 |
+
$model_email = WYSIJA::get('email', 'model');
|
2471 |
+
$this->data['email'] = $email = $model_email->getOne(false, array('email_id' => $_REQUEST['emailId']));
|
2472 |
+
|
2473 |
+
// get dividers
|
2474 |
+
$helper_dividers = WYSIJA::get('dividers', 'helper');
|
2475 |
+
$dividers = $helper_dividers->getAll();
|
2476 |
+
|
2477 |
+
// get theme divider if it's not the default theme
|
2478 |
+
if (isset($email['params']['theme'])) {
|
2479 |
+
$helper_themes = WYSIJA::get('themes', 'helper');
|
2480 |
+
$themeDivider = $helper_themes->getDivider($email['params']['theme']);
|
2481 |
+
if ($themeDivider !== NULL) {
|
2482 |
+
array_unshift($dividers, $themeDivider);
|
2483 |
+
}
|
2484 |
+
}
|
2485 |
+
|
2486 |
+
// get selected divider
|
2487 |
+
if (isset($email['params']['divider'])) {
|
2488 |
+
$selected_divider = $email['params']['divider'];
|
2489 |
+
} else {
|
2490 |
+
$helper_dividers = WYSIJA::get('dividers', 'helper');
|
2491 |
+
$selected_divider = $helper_dividers->getDefault();
|
2492 |
+
}
|
2493 |
+
|
2494 |
+
// set selected divider in first position
|
2495 |
+
array_unshift($dividers, $selected_divider);
|
2496 |
+
|
2497 |
+
// remove selected divider if present in the list
|
2498 |
+
for ($i = 1; $i < count($dividers); $i++) {
|
2499 |
+
if ($dividers[$i]['src'] === $selected_divider['src']) {
|
2500 |
+
unset($dividers[$i]);
|
2501 |
+
break;
|
2502 |
+
}
|
2503 |
+
}
|
2504 |
+
|
2505 |
+
$this->data['selected'] = $selected_divider;
|
2506 |
+
$this->data['dividers'] = $dividers;
|
2507 |
+
return $this->popupContent();
|
2508 |
+
}
|
2509 |
+
|
2510 |
+
function autopost() {
|
2511 |
+
$this->iframeTabs = array('autopost' => __("Add / Edit group of posts", WYSIJA));
|
2512 |
+
$this->js[] = 'wysija-admin-ajax';
|
2513 |
+
$this->js[] = 'wysija-base64';
|
2514 |
+
$this->js[] = 'wysija-scriptaculous';
|
2515 |
+
$this->js[] = 'wysija-colorpicker';
|
2516 |
+
$this->js[] = 'mailpoet-select2';
|
2517 |
+
|
2518 |
+
// translations
|
2519 |
+
$this->jsTrans['show_advanced'] = __('Show display options', WYSIJA);
|
2520 |
+
$this->jsTrans['hide_advanced'] = __('Hide display options', WYSIJA);
|
2521 |
+
|
2522 |
+
$_GET['tab'] = 'autopost';
|
2523 |
+
|
2524 |
+
// get parameters
|
2525 |
+
$params = array(
|
2526 |
+
'category_ids' => null,
|
2527 |
+
'category_condition' => 'include',
|
2528 |
+
'title_tag' => 'h2',
|
2529 |
+
'title_alignment' => 'left',
|
2530 |
+
'title_position' => 'inside',
|
2531 |
+
'image_alignment' => 'alternate',
|
2532 |
+
'image_width' => 325,
|
2533 |
+
'post_content' => 'excerpt',
|
2534 |
+
'readmore' => __('Read more.', WYSIJA),
|
2535 |
+
'show_divider' => 'yes',
|
2536 |
+
'post_limit' => 5,
|
2537 |
+
'post_type' => 'post',
|
2538 |
+
'author_show' => 'no',
|
2539 |
+
'author_label' => __('Author:', WYSIJA),
|
2540 |
+
'category_show' => 'no',
|
2541 |
+
'category_label' => __('Categories:', WYSIJA),
|
2542 |
+
'nopost_message' => __('Latest content already sent.', WYSIJA),
|
2543 |
+
'bgcolor1' => null,
|
2544 |
+
'bgcolor2' => null,
|
2545 |
+
'sort_by' => 'newest'
|
2546 |
+
);
|
2547 |
+
|
2548 |
+
// check if GET parameters are specified
|
2549 |
+
foreach ($params as $key => $value) {
|
2550 |
+
if (array_key_exists($key, $_GET)) {
|
2551 |
+
switch ($key) {
|
2552 |
+
case 'autopost_count':
|
2553 |
+
$params[$key] = (int) $_GET[$key];
|
2554 |
+
break;
|
2555 |
+
case 'author_label':
|
2556 |
+
case 'category_label':
|
2557 |
+
case 'readmore':
|
2558 |
+
case 'nopost_message':
|
2559 |
+
$params[$key] = base64_decode($_GET[$key]);
|
2560 |
+
break;
|
2561 |
+
default:
|
2562 |
+
$params[$key] = $_GET[$key];
|
2563 |
+
}
|
2564 |
+
}
|
2565 |
+
}
|
2566 |
+
|
2567 |
+
// get autopost count
|
2568 |
+
$this->data['autopost_count'] = (array_key_exists('autopost_count', $_GET)) ? (int) $_GET['autopost_count'] : 0;
|
2569 |
+
|
2570 |
+
// get autopost type (single or multiple)
|
2571 |
+
$this->data['autopost_type'] = (array_key_exists('autopost_type', $_GET)) ? $_GET['autopost_type'] : 'multiple';
|
2572 |
+
|
2573 |
+
// if only one group of post can be added, change default alignment to left
|
2574 |
+
if ($this->data['autopost_type'] === 'single') {
|
2575 |
+
if ($params['image_alignment'] === 'alternate')
|
2576 |
+
$params['image_alignment'] = 'left';
|
2577 |
+
}
|
2578 |
+
|
2579 |
+
// we use that now, because categories from a post are different than categories from a CPT
|
2580 |
+
$helper_wp_tools = WYSIJA::get('wp_tools','helper');
|
2581 |
+
$this->data['categories'] = $helper_wp_tools->get_categories();
|
2582 |
+
|
2583 |
+
// max number of posts
|
2584 |
+
$this->data['post_limits'] = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 50);
|
2585 |
+
|
2586 |
+
$this->data['params'] = $params;
|
2587 |
+
|
2588 |
+
return $this->popupContent();
|
2589 |
+
}
|
2590 |
+
|
2591 |
+
function image_data() {
|
2592 |
+
$this->data['url'] = (isset($_GET['url']) && $_GET['url'] !== '') ? trim(urldecode($_GET['url'])) : null;
|
2593 |
+
$this->data['alt'] = (isset($_GET['alt'])) ? trim(urldecode($_GET['alt'])) : '';
|
2594 |
+
|
2595 |
+
$this->iframeTabs = array('image_data' => __("Image Parameters", WYSIJA));
|
2596 |
+
$_GET['tab'] = 'image_data';
|
2597 |
+
return $this->popupContent();
|
2598 |
+
}
|
2599 |
+
|
2600 |
+
function medias() {
|
2601 |
+
$this->popupContent();
|
2602 |
+
}
|
2603 |
+
|
2604 |
+
function special_wysija_browse() {
|
2605 |
+
$this->_wysija_subaction();
|
2606 |
+
$this->jsTrans['deleteimg'] = __('Delete image for all newsletters?', WYSIJA);
|
2607 |
+
return wp_iframe(array($this->viewObj, 'popup_wysija_browse'), array());
|
2608 |
+
}
|
2609 |
+
|
2610 |
+
function special_wordp_browse() {
|
2611 |
+
$this->_wysija_subaction();
|
2612 |
+
$this->jsTrans['deleteimg'] = __('This image might be in an article. Delete anyway?', WYSIJA);
|
2613 |
+
return wp_iframe(array($this->viewObj, 'popup_wp_browse'), array());
|
2614 |
+
}
|
2615 |
+
|
2616 |
+
function _wysija_subaction() {
|
2617 |
+
|
2618 |
+
if (isset($_REQUEST['subaction'])) {
|
2619 |
+
if ($_REQUEST['subaction'] === 'delete') {
|
2620 |
+
if (isset($_REQUEST['imgid']) && (int) $_REQUEST['imgid'] > 0) {
|
2621 |
+
/* delete the image with id imgid */
|
2622 |
+
$res = wp_delete_attachment((int) $_REQUEST['imgid'], true);
|
2623 |
+
if ($res) {
|
2624 |
+
$this->notice(__('Image has been deleted.', WYSIJA));
|
2625 |
+
}
|
2626 |
+
}
|
2627 |
+
}
|
2628 |
+
}
|
2629 |
+
return true;
|
2630 |
+
}
|
2631 |
+
|
2632 |
+
function special_new_wordp_upload() {
|
2633 |
+
|
2634 |
+
//wp_enqueue_script('plupload-all');
|
2635 |
+
wp_enqueue_script('wysija-plupload-handlers', WYSIJA_URL . 'js/jquery/pluploadHandler.js', array('plupload-all', 'jquery'));
|
2636 |
+
$uploader_l10n = array(
|
2637 |
+
'queue_limit_exceeded' => __('You have attempted to queue too many files.'),
|
2638 |
+
'file_exceeds_size_limit' => __('%s exceeds the maximum upload size for this site.'),
|
2639 |
+
'zero_byte_file' => __('This file is empty. Please try another.'),
|
2640 |
+
'invalid_filetype' => __('This file type is not allowed. Please try another.'),
|
2641 |
+
'not_an_image' => __('This file is not an image. Please try another.'),
|
2642 |
+
'image_memory_exceeded' => __('Memory exceeded. Please try another smaller file.'),
|
2643 |
+
'image_dimensions_exceeded' => __('This is larger than the maximum size. Please try another.'),
|
2644 |
+
'default_error' => __('An error occurred in the upload. Please try again later.'),
|
2645 |
+
'missing_upload_url' => __('There was a configuration error. Please contact the server administrator.'),
|
2646 |
+
'upload_limit_exceeded' => __('You may only upload 1 file.'),
|
2647 |
+
'http_error' => __('HTTP error.'),
|
2648 |
+
'upload_failed' => __('Upload failed.'),
|
2649 |
+
'big_upload_failed' => __('Please try uploading this file with the %1$sbrowser uploader%2$s.'),
|
2650 |
+
'big_upload_queued' => __('%s exceeds the maximum upload size for the multi-file uploader when used in your browser.'),
|
2651 |
+
'io_error' => __('IO error.'),
|
2652 |
+
'security_error' => __('Security error.'),
|
2653 |
+
'file_cancelled' => __('File canceled.'),
|
2654 |
+
'upload_stopped' => __('Upload stopped.'),
|
2655 |
+
'dismiss' => __('Dismiss'),
|
2656 |
+
'crunching' => __('Crunching…'),
|
2657 |
+
'deleted' => __('moved to the trash.'),
|
2658 |
+
'error_uploading' => __('“%s” has failed to upload.')
|
2659 |
+
);
|
2660 |
+
|
2661 |
+
wp_localize_script('wysija-plupload-handlers', 'pluploadL10n', $uploader_l10n);
|
2662 |
+
|
2663 |
+
wp_enqueue_script('image-edit');
|
2664 |
+
wp_enqueue_script('set-post-thumbnail');
|
2665 |
+
wp_enqueue_style('imgareaselect');
|
2666 |
+
wp_enqueue_script('media-gallery');
|
2667 |
+
|
2668 |
+
/* wp_register_style('myplupload', '/adjust-this-url/myplupload.css');
|
2669 |
+
wp_enqueue_style('myplupload'); */
|
2670 |
+
|
2671 |
+
|
2672 |
+
$errors = array();
|
2673 |
+
return wp_iframe(array($this->viewObj, 'popup_new_wp_upload'), $errors);
|
2674 |
+
}
|
2675 |
+
|
2676 |
+
function special_wordp_upload() {
|
2677 |
+
|
2678 |
+
wp_enqueue_script('swfupload-all');
|
2679 |
+
wp_enqueue_script('swfupload-handlers');
|
2680 |
+
wp_enqueue_script('wysija-upload-handlers', WYSIJA_URL . "js/jquery/uploadHandlers.js");
|
2681 |
+
wp_enqueue_script('image-edit');
|
2682 |
+
wp_enqueue_script('set-post-thumbnail');
|
2683 |
+
wp_enqueue_style('imgareaselect');
|
2684 |
+
|
2685 |
+
$errors = array();
|
2686 |
+
$id = 0;
|
2687 |
+
if (isset($_GET['flash']))
|
2688 |
+
$_GET['flash'] = 1;
|
2689 |
+
if (isset($_POST['html-upload']) && !empty($_FILES)) {
|
2690 |
+
// Upload File button was clicked
|
2691 |
+
$id = media_handle_upload('async-upload', $_REQUEST['post_id']);
|
2692 |
+
unset($_FILES);
|
2693 |
+
if (is_wp_error($id)) {
|
2694 |
+
$errors['upload_error'] = $id;
|
2695 |
+
$id = false;
|
2696 |
+
}
|
2697 |
+
}
|
2698 |
+
|
2699 |
+
if (!empty($_POST['insertonlybutton'])) {
|
2700 |
+
$href = $_POST['insertonly']['href'];
|
2701 |
+
if (!empty($href) && !strpos($href, '://'))
|
2702 |
+
$href = "http://$href";
|
2703 |
+
|
2704 |
+
$title = esc_attr($_POST['insertonly']['title']);
|
2705 |
+
if (empty($title))
|
2706 |
+
$title = basename($href);
|
2707 |
+
if (!empty($title) && !empty($href))
|
2708 |
+
$html = "<a href='" . esc_url($href) . "' >$title</a>";
|
2709 |
+
$html = apply_filters('file_send_to_editor_url', $html, esc_url_raw($href), $title);
|
2710 |
+
return media_send_to_editor($html);
|
2711 |
+
}
|
2712 |
+
|
2713 |
+
if (!empty($_POST)) {
|
2714 |
+
$return = media_upload_form_handler();
|
2715 |
+
|
2716 |
+
if (is_string($return))
|
2717 |
+
return $return;
|
2718 |
+
if (is_array($return))
|
2719 |
+
$errors = $return;
|
2720 |
+
}
|
2721 |
+
|
2722 |
+
if (isset($_POST['save'])) {
|
2723 |
+
$errors['upload_notice'] = __('Saved.', WYSIJA);
|
2724 |
+
return media_upload_gallery();
|
2725 |
+
}
|
2726 |
+
|
2727 |
+
|
2728 |
+
return wp_iframe(array($this->viewObj, 'popup_wp_upload'), $errors);
|
2729 |
+
}
|
2730 |
+
|
2731 |
+
function _checkEmailExists($emailId) {
|
2732 |
+
$result = false;
|
2733 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
2734 |
+
if ($modelEmail->exists(array('email_id' => $emailId)))
|
2735 |
+
$result = true;
|
2736 |
+
|
2737 |
+
if (!$result) {
|
2738 |
+
$this->error(__("The newsletter doesn't exist.", WYSIJA), 1);
|
2739 |
+
$this->redirect('admin.php?page=wysija_campaigns');
|
2740 |
+
}
|
2741 |
+
else
|
2742 |
+
return true;
|
2743 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2744 |
|
2745 |
}
|
controllers/back/config.php
CHANGED
@@ -18,7 +18,7 @@ class WYSIJA_control_back_config extends WYSIJA_control_back{
|
|
18 |
$this->jsTrans['bounceconnect'] = __('Bounce handling connection test', WYSIJA);
|
19 |
$this->jsTrans['processbounceT'] = __('Bounce handling processing', WYSIJA);
|
20 |
$this->jsTrans['doubleoptinon'] = __('Subscribers will now need to activate their subscription by email in order to receive your newsletters. This is recommended.', WYSIJA);
|
21 |
-
$this->jsTrans['doubleoptinoff'] = __('Unconfirmed subscribers will receive your
|
22 |
$this->jsTrans['processbounce'] = __('Process bounce handling now!', WYSIJA);
|
23 |
$this->jsTrans['errorbounceforward'] = __('When setting up the bounce system, you need to have a different address for the bounce email and the forward to address', WYSIJA);
|
24 |
|
@@ -29,6 +29,9 @@ class WYSIJA_control_back_config extends WYSIJA_control_back{
|
|
29 |
case 'log':
|
30 |
case 'save':
|
31 |
case 'clearlog':
|
|
|
|
|
|
|
32 |
wp_enqueue_script('wysija-config-settings', WYSIJA_URL.'js/admin-config-settings.js', array('wysija-admin-js-global'), WYSIJA::get_version());
|
33 |
wp_localize_script('wysija-config-settings', 'mpEmailCheck', WJ_Utils::get_tip_data());
|
34 |
wp_enqueue_script('jquery-cookie', WYSIJA_URL.'js/jquery/jquery.cookie.js', array('jquery'), WYSIJA::get_version());
|
@@ -59,9 +62,9 @@ class WYSIJA_control_back_config extends WYSIJA_control_back{
|
|
59 |
return;
|
60 |
break;
|
61 |
default:
|
62 |
-
wp_enqueue_script( '
|
63 |
-
wp_enqueue_style(
|
64 |
-
wp_enqueue_script('wysija-config-settings', WYSIJA_URL.'js/admin-config-settings.js', array('wysija-admin-js-global'), WYSIJA::get_version()
|
65 |
wp_localize_script('wysija-config-settings', 'mpEmailCheck', WJ_Utils::get_tip_data());
|
66 |
wp_enqueue_script('jquery-cookie', WYSIJA_URL.'js/jquery/jquery.cookie.js', array('jquery'), WYSIJA::get_version());
|
67 |
}
|
18 |
$this->jsTrans['bounceconnect'] = __('Bounce handling connection test', WYSIJA);
|
19 |
$this->jsTrans['processbounceT'] = __('Bounce handling processing', WYSIJA);
|
20 |
$this->jsTrans['doubleoptinon'] = __('Subscribers will now need to activate their subscription by email in order to receive your newsletters. This is recommended.', WYSIJA);
|
21 |
+
$this->jsTrans['doubleoptinoff'] = __('Unconfirmed subscribers will receive your newslettters from now on without the need to activate their subscriptions.', WYSIJA);
|
22 |
$this->jsTrans['processbounce'] = __('Process bounce handling now!', WYSIJA);
|
23 |
$this->jsTrans['errorbounceforward'] = __('When setting up the bounce system, you need to have a different address for the bounce email and the forward to address', WYSIJA);
|
24 |
|
29 |
case 'log':
|
30 |
case 'save':
|
31 |
case 'clearlog':
|
32 |
+
|
33 |
+
wp_enqueue_script('jquery-qtip', WYSIJA_URL.'js/qtip2/jquery.qtip.min.js', array('jquery'), WYSIJA::get_version());
|
34 |
+
wp_enqueue_style('jquery-qtip-css', WYSIJA_URL.'css/qtip2/jquery.qtip.min.css');
|
35 |
wp_enqueue_script('wysija-config-settings', WYSIJA_URL.'js/admin-config-settings.js', array('wysija-admin-js-global'), WYSIJA::get_version());
|
36 |
wp_localize_script('wysija-config-settings', 'mpEmailCheck', WJ_Utils::get_tip_data());
|
37 |
wp_enqueue_script('jquery-cookie', WYSIJA_URL.'js/jquery/jquery.cookie.js', array('jquery'), WYSIJA::get_version());
|
62 |
return;
|
63 |
break;
|
64 |
default:
|
65 |
+
wp_enqueue_script( 'jquery-qtip', WYSIJA_URL.'js/qtip2/jquery.qtip.min.js', array('jquery'), WYSIJA::get_version());
|
66 |
+
wp_enqueue_style('jquery-qtip-css', WYSIJA_URL.'css/qtip2/jquery.qtip.min.css');
|
67 |
+
wp_enqueue_script('wysija-config-settings', WYSIJA_URL.'js/admin-config-settings.js', array('wysija-admin-js-global', 'jquery-qtip'), WYSIJA::get_version());
|
68 |
wp_localize_script('wysija-config-settings', 'mpEmailCheck', WJ_Utils::get_tip_data());
|
69 |
wp_enqueue_script('jquery-cookie', WYSIJA_URL.'js/jquery/jquery.cookie.js', array('jquery'), WYSIJA::get_version());
|
70 |
}
|
controllers/back/statistics.php
CHANGED
@@ -1,197 +1,176 @@
|
|
1 |
<?php
|
|
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
require_once(WYSIJA_CORE.'module'.DS.'statistics.php'); // @todo
|
4 |
|
5 |
-
class WYSIJA_control_back_statistics extends WYSIJA_control_back
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
WYSIJA_module_statistics::GROUP_BY_MONTH :
|
88 |
-
WYSIJA_module_statistics::GROUP_BY_DATE; // $this->data['date_interval']->days == 0, means, no begin date, no end date
|
89 |
-
|
90 |
-
// Hack!
|
91 |
-
$_REQUEST['limit_pp'] = $hook_params['top'];// Pagination, mark current selected value
|
92 |
-
|
93 |
-
$modules = WYSIJA_module::get_modules_from_hook($hook_name);
|
94 |
-
$this->data['modules'] = $modules;
|
95 |
-
$this->data['lazy_load_modules'] = array( );
|
96 |
-
$this->data['first_module'] = '';
|
97 |
-
|
98 |
-
if (!$this->lazy_load)
|
99 |
-
{
|
100 |
-
$this->data['hooks'][$hook_name] = apply_filters('hook_stats', '', $hook_params);
|
101 |
-
}
|
102 |
-
else
|
103 |
-
{
|
104 |
-
if (!empty($modules))
|
105 |
-
{
|
106 |
-
$first_module = array_shift($modules);
|
107 |
-
// List of lazy loaded modules
|
108 |
-
$this->data['lazy_load_modules'] = $modules;
|
109 |
-
|
110 |
-
// Evenly we are lazy loading, we always load the first module by default
|
111 |
-
$this->data['first_module'] = apply_filters('custom_module_hook', '', $first_module, $hook_name, $hook_params);
|
112 |
-
}
|
113 |
-
}
|
114 |
-
}
|
115 |
-
|
116 |
-
/**
|
117 |
-
* get pre defined dates (duration)
|
118 |
-
* @return type
|
119 |
-
*/
|
120 |
-
protected function get_pre_defined_dates()
|
121 |
-
{
|
122 |
-
return array(
|
123 |
-
array(
|
124 |
-
'value' => 7,
|
125 |
-
'label' => __('Last 7 days', WYSIJA),
|
126 |
-
'selected' => false,
|
127 |
-
'from' => date($this->date_format, strtotime('-7 days')),
|
128 |
-
'to' => date($this->date_format, strtotime('tomorrow'))
|
129 |
-
),
|
130 |
-
array(
|
131 |
-
'value' => 'last_month',
|
132 |
-
'label' => __('Last month', WYSIJA),
|
133 |
-
'selected' => false,
|
134 |
-
'from' => date($this->date_format, mktime(0, 0, 0, date('m')-1, 1, date('Y'))),
|
135 |
-
'to' => date($this->date_format, mktime(0, 0, 0, date('m'), 0, date('Y')))
|
136 |
-
|
137 |
-
|
138 |
-
),
|
139 |
-
array(
|
140 |
-
'value' => 30,
|
141 |
-
'label' => __('Last 30 days', WYSIJA),
|
142 |
-
'selected' => false,
|
143 |
-
'from' => date($this->date_format, strtotime('-30 days')),
|
144 |
-
'to' => date($this->date_format, strtotime('tomorrow'))
|
145 |
-
),
|
146 |
-
array(
|
147 |
-
'value' => 90,
|
148 |
-
'label' => __('Last 90 days', WYSIJA),
|
149 |
-
'selected' => true,
|
150 |
-
'from' => date($this->date_format, strtotime('-90 days')),
|
151 |
-
'to' => date($this->date_format, strtotime('tomorrow'))
|
152 |
-
),
|
153 |
-
array(
|
154 |
-
'value' => 180,
|
155 |
-
'label' => __('Last 180 days', WYSIJA),
|
156 |
-
'selected' => false,
|
157 |
-
'from' => date($this->date_format, strtotime('-180 days')),
|
158 |
-
'to' => date($this->date_format, strtotime('tomorrow'))
|
159 |
-
),
|
160 |
-
array(
|
161 |
-
'value' => 365,
|
162 |
-
'label' => __('Last 365 days', WYSIJA),
|
163 |
-
'selected' => false,
|
164 |
-
'from' => date($this->date_format, strtotime('-365 days')),
|
165 |
-
'to' => date($this->date_format, strtotime('tomorrow'))
|
166 |
-
),
|
167 |
-
array(
|
168 |
-
'value' => 0,
|
169 |
-
'label' => __('Custom dates', WYSIJA),
|
170 |
-
'selected' => false,
|
171 |
-
'from' => '',
|
172 |
-
'to' => ''
|
173 |
-
),
|
174 |
-
);
|
175 |
}
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
return $duration;
|
186 |
-
return end($this->pre_defined_dates);
|
187 |
}
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
}
|
1 |
<?php
|
2 |
+
|
3 |
defined('WYSIJA') or die('Restricted access');
|
4 |
require_once(WYSIJA_CORE.'module'.DS.'statistics.php'); // @todo
|
5 |
|
6 |
+
class WYSIJA_control_back_statistics extends WYSIJA_control_back {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Main model of this controller
|
10 |
+
* @var string
|
11 |
+
*/
|
12 |
+
public $model = 'statistics';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Main view of this controller
|
16 |
+
* @var string
|
17 |
+
*/
|
18 |
+
public $view = 'statistics';
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Base URL of all requests
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
public $base_url = 'admin.php';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Load blocks at a same time (FALSE) or one by one (TRUE)
|
28 |
+
* @var TRUE
|
29 |
+
*/
|
30 |
+
protected $lazy_load = true;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* list of pre-defined dates
|
34 |
+
* @var Array
|
35 |
+
*/
|
36 |
+
protected $pre_defined_dates = array();
|
37 |
+
protected $date_format = 'Y/m/d';
|
38 |
+
protected $js_date_format = 'yy/mm/dd';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Constructor
|
42 |
+
*/
|
43 |
+
function WYSIJA_control_back_statistics() {}
|
44 |
+
|
45 |
+
public function defaultDisplay() {
|
46 |
+
$this->pre_defined_dates = $this->get_pre_defined_dates();
|
47 |
+
// Define view
|
48 |
+
$this->viewShow = $this->action = 'main';
|
49 |
+
$this->js['jquery.core'] = 'jquery/ui/jquery.ui.core';
|
50 |
+
$this->js['jquery.datepicker'] = 'jquery/ui/jquery.ui.datepicker';
|
51 |
+
$this->js['wysijalazyload'] = 'wysija-lazyload';
|
52 |
+
$this->js['admin-statistics-filter'] = 'admin-statistics-filter';
|
53 |
+
wp_enqueue_style('jquery.core', WYSIJA_URL.'css/jquery/ui/themes/base/jquery.ui.core.min.css', array(), WYSIJA::get_version());
|
54 |
+
wp_enqueue_style('jquery.core', WYSIJA_URL.'css/jquery/ui/themes/base/jquery.ui.theme.min.css', array(), WYSIJA::get_version());
|
55 |
+
|
56 |
+
// date filter
|
57 |
+
$default_duration = $this->get_default_duration();
|
58 |
+
if( function_exists('date_diff')){
|
59 |
+
$this->data['date_interval'] = date_diff(date_create($default_duration['from']), date_create($default_duration['to']));
|
60 |
+
}else{
|
61 |
+
$duration = strtotime($default_duration['to']) - strtotime($default_duration['from']);
|
62 |
+
$helper_toolbox = WYSIJA::get('toolbox' , 'helper');
|
63 |
+
$this->data['date_interval'] = (object)$helper_toolbox->convert_seconds_to_array($duration , false);
|
64 |
+
}
|
65 |
+
|
66 |
+
$this->data['custom_dates'] = $this->pre_defined_dates;
|
67 |
+
$this->data['default_duration'] = $default_duration;
|
68 |
+
$this->data['js_date_format'] = $this->js_date_format;
|
69 |
+
|
70 |
+
// Process and push data into view
|
71 |
+
$this->data['lazy_load'] = $this->lazy_load;
|
72 |
+
$hook_name = 'hook_stats';
|
73 |
+
$hook_params = array();
|
74 |
+
$hook_params['top'] = WYSIJA_module_statistics::DEFAULT_TOP_RECORDS;
|
75 |
+
$hook_params['from'] = !empty($_REQUEST['filter']['from']) ? $_REQUEST['filter']['from'] : $default_duration['from'];
|
76 |
+
$hook_params['to'] = !empty($_REQUEST['filter']['to']) ? $_REQUEST['filter']['to'] : $default_duration['to'];
|
77 |
+
$hook_params['group_by'] = ($this->data['date_interval']->days == 0 || $this->data['date_interval']->days > WYSIJA_module_statistics::SWITCHING_DATE_TO_MONTH_THRESHOLD) ?
|
78 |
+
WYSIJA_module_statistics::GROUP_BY_MONTH :
|
79 |
+
WYSIJA_module_statistics::GROUP_BY_DATE;// $this->data['date_interval']->days == 0, means, no begin date, no end date
|
80 |
+
|
81 |
+
$modules = WYSIJA_module::get_modules_from_hook($hook_name);
|
82 |
+
$this->data['modules'] = $modules;
|
83 |
+
$this->data['lazy_load_modules'] = array();
|
84 |
+
$this->data['first_module'] = '';
|
85 |
+
|
86 |
+
if (!$this->lazy_load) {
|
87 |
+
$this->data['hooks'][$hook_name] = apply_filters('hook_stats', '', $hook_params);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
+
else {
|
90 |
+
if (!empty($modules)) {
|
91 |
+
$first_module = array_shift($modules);
|
92 |
+
// List of lazy loaded modules
|
93 |
+
$this->data['lazy_load_modules'] = $modules;
|
94 |
+
|
95 |
+
// Evenly we are lazy loading, we always load the first module by default
|
96 |
+
$this->data['first_module'] = apply_filters('custom_module_hook', '', $first_module, $hook_name, $hook_params);
|
97 |
+
}
|
|
|
|
|
98 |
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* get pre defined dates (duration)
|
103 |
+
* @return type
|
104 |
+
*/
|
105 |
+
protected function get_pre_defined_dates() {
|
106 |
+
return array(
|
107 |
+
array(
|
108 |
+
'value' => 7,
|
109 |
+
'label' => __('Last 7 days', WYSIJA),
|
110 |
+
'selected' => false,
|
111 |
+
'from' => date($this->date_format, strtotime('-7 days')),
|
112 |
+
'to' => date($this->date_format, strtotime('tomorrow'))
|
113 |
+
),
|
114 |
+
array(
|
115 |
+
'value' => 'last_month',
|
116 |
+
'label' => __('Last month', WYSIJA),
|
117 |
+
'selected' => false,
|
118 |
+
'from' => date($this->date_format, strtotime('first day of previous month')),
|
119 |
+
'to' => date($this->date_format, strtotime('last day of previous month'))
|
120 |
+
),
|
121 |
+
array(
|
122 |
+
'value' => 30,
|
123 |
+
'label' => __('Last 30 days', WYSIJA),
|
124 |
+
'selected' => false,
|
125 |
+
'from' => date($this->date_format, strtotime('-30 days')),
|
126 |
+
'to' => date($this->date_format, strtotime('tomorrow'))
|
127 |
+
),
|
128 |
+
array(
|
129 |
+
'value' => 90,
|
130 |
+
'label' => __('Last 90 days', WYSIJA),
|
131 |
+
'selected' => true,
|
132 |
+
'from' => date($this->date_format, strtotime('-90 days')),
|
133 |
+
'to' => date($this->date_format, strtotime('tomorrow'))
|
134 |
+
),
|
135 |
+
array(
|
136 |
+
'value' => 180,
|
137 |
+
'label' => __('Last 180 days', WYSIJA),
|
138 |
+
'selected' => false,
|
139 |
+
'from' => date($this->date_format, strtotime('-180 days')),
|
140 |
+
'to' => date($this->date_format, strtotime('tomorrow'))
|
141 |
+
),
|
142 |
+
array(
|
143 |
+
'value' => 365,
|
144 |
+
'label' => __('Last 365 days', WYSIJA),
|
145 |
+
'selected' => false,
|
146 |
+
'from' => date($this->date_format, strtotime('-365 days')),
|
147 |
+
'to' => date($this->date_format, strtotime('tomorrow'))
|
148 |
+
),
|
149 |
+
array(
|
150 |
+
'value' => 0,
|
151 |
+
'label' => __('Custom dates', WYSIJA),
|
152 |
+
'selected' => false,
|
153 |
+
'from' => '',
|
154 |
+
'to' => ''
|
155 |
+
),
|
156 |
+
);
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Get default duration of stats
|
161 |
+
* @return int
|
162 |
+
*/
|
163 |
+
protected function get_default_duration() {
|
164 |
+
foreach ($this->pre_defined_dates as $duration)
|
165 |
+
if (isset($duration['selected']) && $duration['selected'])
|
166 |
+
return $duration;
|
167 |
+
return end($this->pre_defined_dates);
|
168 |
+
}
|
169 |
+
|
170 |
+
function date_diff($time_start,$time_end){
|
171 |
+
$result = null;
|
172 |
+
$duration = $time_end - $time_start;
|
173 |
+
$result->days = floor($duration/(60*60*24));
|
174 |
+
return $result;
|
175 |
+
}
|
176 |
}
|
controllers/back/subscribers.php
CHANGED
@@ -145,22 +145,6 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
145 |
}
|
146 |
|
147 |
|
148 |
-
/**
|
149 |
-
* Get selected lists
|
150 |
-
* @return array
|
151 |
-
*/
|
152 |
-
protected function get_selected_lists() {
|
153 |
-
$result = array();
|
154 |
-
if (isset($_REQUEST['wysija']['filter']['filter_list'])) {
|
155 |
-
$result[] = $_REQUEST['wysija']['filter']['filter_list'];
|
156 |
-
} elseif (!empty($_REQUEST['filter-list'])) {
|
157 |
-
$lists = explode(',', trim($_REQUEST['filter-list']));// currently, only single list is allowed.
|
158 |
-
if (!empty($lists)) {
|
159 |
-
$result = array_merge ($result, $lists);
|
160 |
-
}
|
161 |
-
}
|
162 |
-
return $result;
|
163 |
-
}
|
164 |
|
165 |
function defaultDisplay(){
|
166 |
$this->viewShow=$this->action='main';
|
@@ -190,7 +174,6 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
190 |
|
191 |
// count the rows based on the filters
|
192 |
$filters = $this->modelObj->detect_filters();
|
193 |
-
|
194 |
$select = array( 'COUNT(DISTINCT([wysija]user.user_id)) as total_users', 'MAX([wysija]user.created_at) as max_create_at');
|
195 |
$count_rows = $this->modelObj->get_subscribers( $select, $filters);
|
196 |
|
@@ -221,7 +204,6 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
221 |
|
222 |
$this->data['current_counts'] = $this->modelObj->countRows;
|
223 |
$this->data['show_batch_select'] = ($this->modelObj->limit >= $this->modelObj->countRows) ? false : true;
|
224 |
-
$this->data['selected_lists'] = $this->get_selected_lists();
|
225 |
$this->modelObj->reset();
|
226 |
|
227 |
|
@@ -363,7 +345,7 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
363 |
$this->notice(sprintf(__('%1$s subscribers have been added to "%2$s".',WYSIJA),$this->_affected_rows,$result['name']));
|
364 |
else
|
365 |
$this->notice(sprintf(__('%1$s subscriber have been added to "%2$s".',WYSIJA),$this->_affected_rows,$result['name']));
|
366 |
-
$this->
|
367 |
}
|
368 |
|
369 |
/**
|
@@ -389,23 +371,9 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
389 |
$this->notice(sprintf(__('%1$s subscriber have been moved to "%2$s".',WYSIJA), $this->_affected_rows, $result['name']));
|
390 |
}
|
391 |
|
392 |
-
$this->
|
393 |
}
|
394 |
|
395 |
-
/**
|
396 |
-
* After performing a bulk action, let's keep the current list filter
|
397 |
-
*/
|
398 |
-
protected function redirect_after_bulk_action() {
|
399 |
-
$filter_list = !empty($_REQUEST['wysija']['filter']['filter_list']) ? $_REQUEST['wysija']['filter']['filter_list'] : 0;
|
400 |
-
if (empty($filter_list)) {// view all lists
|
401 |
-
$this->redirect('admin.php?page=wysija_subscribers');
|
402 |
-
} elseif (is_numeric($filter_list)) {
|
403 |
-
$this->redirect('admin.php?page=wysija_subscribers&filter-list='.$filter_list);
|
404 |
-
} else {// subscribers in no list
|
405 |
-
$this->redirect('admin.php?page=wysija_subscribers&filter-list=orphaned');
|
406 |
-
}
|
407 |
-
}
|
408 |
-
|
409 |
/**
|
410 |
* Bulk action remove subscribers from all existing lists
|
411 |
* @param type $data = array('list_id'=>?)
|
@@ -418,10 +386,10 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
418 |
$helpU->removeFromLists(array(),$_POST['wysija']['user']['user_id']);
|
419 |
|
420 |
if($this->_affected_rows > 1)
|
421 |
-
$this->notice(sprintf(__('%1$s subscribers have been removed from all
|
422 |
else
|
423 |
-
$this->notice(sprintf(__('%1$s subscriber have been removed from all
|
424 |
-
$this->
|
425 |
}
|
426 |
|
427 |
/**
|
@@ -441,8 +409,7 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
441 |
$this->notice(sprintf(__('%1$s subscribers have been removed from "%2$s".',WYSIJA),$this->_affected_rows, $result['name']));
|
442 |
else
|
443 |
$this->notice(sprintf(__('%1$s subscriber have been removed from "%2$s".',WYSIJA),$this->_affected_rows, $result['name']));
|
444 |
-
|
445 |
-
$this->redirect_after_bulk_action();
|
446 |
}
|
447 |
|
448 |
/**
|
@@ -459,7 +426,7 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
459 |
$this->notice(sprintf(__('%1$s subscribers have been confirmed.',WYSIJA),$this->_affected_rows));
|
460 |
else
|
461 |
$this->notice(sprintf(__('%1$s subscriber have been confirmed.',WYSIJA),$this->_affected_rows));
|
462 |
-
$this->
|
463 |
}
|
464 |
|
465 |
/**
|
@@ -974,7 +941,7 @@ class WYSIJA_control_back_subscribers extends WYSIJA_control_back{
|
|
974 |
|
975 |
// make sure the total count of subscribers is updated
|
976 |
$helper_user->refreshUsers();
|
977 |
-
$this->
|
978 |
}
|
979 |
|
980 |
/**
|
145 |
}
|
146 |
|
147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
|
149 |
function defaultDisplay(){
|
150 |
$this->viewShow=$this->action='main';
|
174 |
|
175 |
// count the rows based on the filters
|
176 |
$filters = $this->modelObj->detect_filters();
|
|
|
177 |
$select = array( 'COUNT(DISTINCT([wysija]user.user_id)) as total_users', 'MAX([wysija]user.created_at) as max_create_at');
|
178 |
$count_rows = $this->modelObj->get_subscribers( $select, $filters);
|
179 |
|
204 |
|
205 |
$this->data['current_counts'] = $this->modelObj->countRows;
|
206 |
$this->data['show_batch_select'] = ($this->modelObj->limit >= $this->modelObj->countRows) ? false : true;
|
|
|
207 |
$this->modelObj->reset();
|
208 |
|
209 |
|
345 |
$this->notice(sprintf(__('%1$s subscribers have been added to "%2$s".',WYSIJA),$this->_affected_rows,$result['name']));
|
346 |
else
|
347 |
$this->notice(sprintf(__('%1$s subscriber have been added to "%2$s".',WYSIJA),$this->_affected_rows,$result['name']));
|
348 |
+
$this->redirect('admin.php?page=wysija_subscribers&filter-list='.$data['listid']);
|
349 |
}
|
350 |
|
351 |
/**
|
371 |
$this->notice(sprintf(__('%1$s subscriber have been moved to "%2$s".',WYSIJA), $this->_affected_rows, $result['name']));
|
372 |
}
|
373 |
|
374 |
+
$this->redirect('admin.php?page=wysija_subscribers&filter-list='.$data['listid']);
|
375 |
}
|
376 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
377 |
/**
|
378 |
* Bulk action remove subscribers from all existing lists
|
379 |
* @param type $data = array('list_id'=>?)
|
386 |
$helpU->removeFromLists(array(),$_POST['wysija']['user']['user_id']);
|
387 |
|
388 |
if($this->_affected_rows > 1)
|
389 |
+
$this->notice(sprintf(__('%1$s subscribers have been removed from all exising lists.',WYSIJA),$this->_affected_rows));
|
390 |
else
|
391 |
+
$this->notice(sprintf(__('%1$s subscriber have been removed from all exising lists.',WYSIJA),$this->_affected_rows));
|
392 |
+
$this->defaultDisplay();
|
393 |
}
|
394 |
|
395 |
/**
|
409 |
$this->notice(sprintf(__('%1$s subscribers have been removed from "%2$s".',WYSIJA),$this->_affected_rows, $result['name']));
|
410 |
else
|
411 |
$this->notice(sprintf(__('%1$s subscriber have been removed from "%2$s".',WYSIJA),$this->_affected_rows, $result['name']));
|
412 |
+
$this->redirect('admin.php?page=wysija_subscribers&filter-list='.$data['listid']);
|
|
|
413 |
}
|
414 |
|
415 |
/**
|
426 |
$this->notice(sprintf(__('%1$s subscribers have been confirmed.',WYSIJA),$this->_affected_rows));
|
427 |
else
|
428 |
$this->notice(sprintf(__('%1$s subscriber have been confirmed.',WYSIJA),$this->_affected_rows));
|
429 |
+
$this->defaultDisplay();
|
430 |
}
|
431 |
|
432 |
/**
|
941 |
|
942 |
// make sure the total count of subscribers is updated
|
943 |
$helper_user->refreshUsers();
|
944 |
+
$this->redirect();
|
945 |
}
|
946 |
|
947 |
/**
|
controllers/front/stats.php
CHANGED
@@ -5,14 +5,6 @@ defined('WYSIJA') or die('Restricted access');
|
|
5 |
class WYSIJA_control_front_stats extends WYSIJA_control_front{
|
6 |
var $model='' ;
|
7 |
var $view='';
|
8 |
-
|
9 |
-
/**
|
10 |
-
* Possible characters to be url encoded
|
11 |
-
* @var array
|
12 |
-
*/
|
13 |
-
protected $characters_to_encode = array(
|
14 |
-
'@'
|
15 |
-
);
|
16 |
|
17 |
function WYSIJA_control_front_stats(){
|
18 |
parent::WYSIJA_control_front();
|
@@ -27,30 +19,17 @@ class WYSIJA_control_front_stats extends WYSIJA_control_front{
|
|
27 |
|
28 |
$WJ_Stats = new WJ_Stats();
|
29 |
if(!empty($WJ_Stats->clicked_url)){
|
30 |
-
//
|
31 |
-
$url = $
|
32 |
do_action('mpoet_click_stats', $WJ_Stats);
|
33 |
$this->redirect($url);
|
34 |
}else{
|
35 |
-
//
|
36 |
$WJ_Stats->subscriber_opened();
|
37 |
}
|
38 |
}
|
39 |
|
40 |
return true;
|
41 |
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Encode some special characters in url
|
45 |
-
* @param string $url
|
46 |
-
* @return string
|
47 |
-
*/
|
48 |
-
protected function encode_url($url) {
|
49 |
-
return str_replace(
|
50 |
-
$this->characters_to_encode,
|
51 |
-
array_map('urlencode', $this->characters_to_encode),
|
52 |
-
$url
|
53 |
-
);
|
54 |
-
}
|
55 |
-
|
56 |
}
|
5 |
class WYSIJA_control_front_stats extends WYSIJA_control_front{
|
6 |
var $model='' ;
|
7 |
var $view='';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
function WYSIJA_control_front_stats(){
|
10 |
parent::WYSIJA_control_front();
|
19 |
|
20 |
$WJ_Stats = new WJ_Stats();
|
21 |
if(!empty($WJ_Stats->clicked_url)){
|
22 |
+
//clicked stats
|
23 |
+
$url = $WJ_Stats->subscriber_clicked();
|
24 |
do_action('mpoet_click_stats', $WJ_Stats);
|
25 |
$this->redirect($url);
|
26 |
}else{
|
27 |
+
//opened stat */
|
28 |
$WJ_Stats->subscriber_opened();
|
29 |
}
|
30 |
}
|
31 |
|
32 |
return true;
|
33 |
}
|
34 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
core/base.php
CHANGED
@@ -1,1578 +1,1476 @@
|
|
1 |
-
<?php
|
2 |
-
// Require constants.
|
3 |
-
require_once(
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
*
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
*
|
32 |
-
* @
|
33 |
-
* @
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
*
|
82 |
-
* @
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
//
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
*
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
function
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
if (
|
244 |
-
|
245 |
-
}
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
$class
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
}
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
'
|
287 |
-
|
288 |
-
'
|
289 |
-
'
|
290 |
-
|
291 |
-
'
|
292 |
-
|
293 |
-
'
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
/**
|
329 |
-
*
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
$
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
if(
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
$
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
break;
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
}
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
$
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
$
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
$
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
$model_user->
|
926 |
-
if($
|
927 |
-
$
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
$model_user->
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
$
|
939 |
-
|
940 |
-
return true;
|
941 |
-
}
|
942 |
-
|
943 |
-
/**
|
944 |
-
*
|
945 |
-
* @param type $
|
946 |
-
* @
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
//
|
952 |
-
$
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
}
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
}
|
1019 |
-
|
1020 |
-
/**
|
1021 |
-
*
|
1022 |
-
*
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
*
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
$
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
*
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
}
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
*
|
1171 |
-
* @
|
1172 |
-
* @return
|
1173 |
-
*/
|
1174 |
-
public static function
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
if(
|
1179 |
-
$
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
$
|
1261 |
-
$
|
1262 |
-
|
1263 |
-
$
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
$
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
}
|
1392 |
-
|
1393 |
-
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
if
|
1421 |
-
|
1422 |
-
|
1423 |
-
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
//
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
//
|
1444 |
-
|
1445 |
-
|
1446 |
-
//
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
// make sure the scheduled tasks are recorded when using WordPress' cron
|
1479 |
-
}else{
|
1480 |
-
|
1481 |
-
// filter to add new possible frequencies to the cron
|
1482 |
-
add_filter( 'cron_schedules', array( 'WYSIJA', 'filter_cron_schedules' ) );
|
1483 |
-
|
1484 |
-
// action to handle the scheduled tasks in wysija
|
1485 |
-
add_action( 'wysija_cron_queue', array( 'WYSIJA', 'croned_queue' ) );
|
1486 |
-
add_action( 'wysija_cron_daily', array( 'WYSIJA', 'croned_daily' ) );
|
1487 |
-
add_action( 'wysija_cron_weekly', array( 'WYSIJA', 'croned_weekly' ) );
|
1488 |
-
add_action( 'wysija_cron_monthly', array( 'WYSIJA', 'croned_monthly' ) );
|
1489 |
-
|
1490 |
-
// same with the weekly task
|
1491 |
-
if(!wp_next_scheduled('wysija_cron_weekly')){
|
1492 |
-
wp_schedule_event( $modelConf->getValue('last_save') , 'eachweek', 'wysija_cron_weekly' );
|
1493 |
-
}
|
1494 |
-
// the monthly task...
|
1495 |
-
if(!wp_next_scheduled('wysija_cron_monthly')){
|
1496 |
-
wp_schedule_event( $modelConf->getValue('last_save') , 'each28days', 'wysija_cron_monthly' );
|
1497 |
-
}
|
1498 |
-
|
1499 |
-
// the daily task...
|
1500 |
-
if(!wp_next_scheduled('wysija_cron_daily')){
|
1501 |
-
wp_schedule_event( $modelConf->getValue('last_save') , 'daily', 'wysija_cron_daily' );
|
1502 |
-
}
|
1503 |
-
|
1504 |
-
|
1505 |
-
if(is_multisite()){
|
1506 |
-
|
1507 |
-
// in the case of multisite and the network's method we schedule with a different frequency
|
1508 |
-
// this option contains the list of sites already scheduled
|
1509 |
-
$ms_wysija_bounce_cron = get_site_option('ms_wysija_bounce_cron');
|
1510 |
-
global $blog_id;
|
1511 |
-
|
1512 |
-
// if this blog is not recorded in our wysija_sending_cron option then we clear its scheduled so that we can reinitialize it
|
1513 |
-
if(!$ms_wysija_bounce_cron || !isset($ms_wysija_bounce_cron[$blog_id])){
|
1514 |
-
wp_clear_scheduled_hook('wysija_cron_bounce');
|
1515 |
-
WYSIJA::set_cron_schedule('queue');
|
1516 |
-
$ms_wysija_bounce_cron[$blog_id] = 1;
|
1517 |
-
update_site_option('ms_wysija_bounce_cron',$ms_wysija_bounce_cron);
|
1518 |
-
}
|
1519 |
-
|
1520 |
-
}
|
1521 |
-
|
1522 |
-
// if the bounce task is not scheduled then we initialize it
|
1523 |
-
if(!wp_next_scheduled('wysija_cron_bounce')){
|
1524 |
-
wp_schedule_event( $modelConf->getValue('last_save') , $modelConf->getValue('bouncing_emails_each'), 'wysija_cron_bounce' );
|
1525 |
-
}
|
1526 |
-
|
1527 |
-
// and the queue processing task ...
|
1528 |
-
// if we are in a multisite case we make sure that the ms frequency hasn't been changed, if it has we reset it
|
1529 |
-
if(is_multisite() && $modelConf->getValue('sending_method')=='network'){
|
1530 |
-
// in the case of multisite and the network's method we schedule with a different frequency
|
1531 |
-
// this option contains the list of sites already scheduled
|
1532 |
-
$ms_wysija_sending_cron=get_site_option('ms_wysija_sending_cron');
|
1533 |
-
global $blog_id;
|
1534 |
-
|
1535 |
-
// if this blog is not recorded in our wysija_sending_cron option then we clear its scheduled so that we can reinitialize it
|
1536 |
-
if(!$ms_wysija_sending_cron || !isset($ms_wysija_sending_cron[$blog_id])){
|
1537 |
-
wp_clear_scheduled_hook('wysija_cron_queue');
|
1538 |
-
WYSIJA::set_cron_schedule('queue');
|
1539 |
-
$ms_wysija_sending_cron[$blog_id]=1;
|
1540 |
-
update_site_option('ms_wysija_sending_cron',$ms_wysija_sending_cron);
|
1541 |
-
}
|
1542 |
-
}
|
1543 |
-
|
1544 |
-
|
1545 |
-
// simply schedule the queue
|
1546 |
-
if(!wp_next_scheduled('wysija_cron_queue')){
|
1547 |
-
|
1548 |
-
// in the case of multisite and the network's method we schedule with a different frequency
|
1549 |
-
if(is_multisite() && $modelConf->getValue('sending_method')=='network'){
|
1550 |
-
$sending_emails_each=$modelConf->getValue('ms_sending_emails_each');
|
1551 |
-
}else{
|
1552 |
-
$sending_emails_each=$modelConf->getValue('sending_emails_each');
|
1553 |
-
}
|
1554 |
-
wp_schedule_event( $modelConf->getValue('last_save') , $sending_emails_each, 'wysija_cron_queue' );
|
1555 |
-
}
|
1556 |
-
|
1557 |
-
}// END all that concerns the CRON
|
1558 |
-
|
1559 |
-
// filter fixing a bug with automatic load_text_domain_from WP didn't understand yet why this was necessary...
|
1560 |
-
// somehow wp_register_script(which is irrelevant) was triggerring this kind of notice
|
1561 |
-
// Warning: is_readable() [function.is-readable]: open_basedir restriction in effect. File(C:\Domains\website.com\wwwroot\web/wp-content/plugins/C:\Domains\website.com\wwwroot\web\wp-content\plugins\wysija-newsletters/languages/wysija-newsletters-en_US.mo) is not within the allowed path(s): (.;C:\Domains\;C:\PHP\;C:\Sites\;C:\SitesData\;/) in C:\Domains\website.com\wwwroot\web\wp-includes\l10n.php on line 339
|
1562 |
-
// the only solution is to make sure on our end that the file exists and rewrite it if necessary
|
1563 |
-
add_filter( 'override_load_textdomain', array( 'WYSIJA', 'override_load_textdomain' ), 10, 3);
|
1564 |
-
add_filter('load_textdomain_mofile', array( 'WYSIJA', 'load_textdomain_mofile' ), 10, 2);
|
1565 |
-
}
|
1566 |
-
|
1567 |
-
// not yet used but the purpose is to override any notification sent through wp_mail
|
1568 |
-
if($modelConf->getValue('wp_notifications')){
|
1569 |
-
$hWPnotif=WYSIJA::get('wp_notifications','helper');
|
1570 |
-
}
|
1571 |
-
|
1572 |
-
register_deactivation_hook(WYSIJA_FILE, array( 'WYSIJA', 'deactivate' ));
|
1573 |
-
register_activation_hook(WYSIJA_FILE, array( 'WYSIJA', 'activate' ));
|
1574 |
-
add_action( 'init', array('WYSIJA','create_post_type') );
|
1575 |
-
|
1576 |
-
|
1577 |
-
// launch application
|
1578 |
-
$helper = WYSIJA::get(WYSIJA_SIDE,'helper');
|
1 |
+
<?php
|
2 |
+
// Require constants.
|
3 |
+
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'constants.php');
|
4 |
+
// Require global classes autoloader
|
5 |
+
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'autoloader.php');
|
6 |
+
|
7 |
+
defined('WYSIJA') or die('Restricted access');
|
8 |
+
global $wysija_msg;
|
9 |
+
global $wysija_wpmsg;
|
10 |
+
if(!$wysija_msg) $wysija_msg=array();
|
11 |
+
$wysija_wpmsg=array();
|
12 |
+
|
13 |
+
class WYSIJA_object{
|
14 |
+
|
15 |
+
function WYSIJA_object(){
|
16 |
+
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Order an array by param name string compare
|
21 |
+
*
|
22 |
+
* @param array $a Array with the param to compare
|
23 |
+
* @param array $b Array with the param to compare
|
24 |
+
* @return int Sorting result from strcmp
|
25 |
+
*/
|
26 |
+
public static function sort_by_name($a, $b){
|
27 |
+
return strcmp( strtolower( $a["name"] ), strtolower( $b["name"] ) );
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* return a plugin version safely anywhere in any hook and stock it staticaly
|
32 |
+
* @staticvar array $versions
|
33 |
+
* @param string $plugin_name
|
34 |
+
* @return array|string
|
35 |
+
*/
|
36 |
+
public static function get_version($plugin_name=false) {
|
37 |
+
static $versions=array();
|
38 |
+
if(isset($versions[$plugin_name])) return $versions[$plugin_name];
|
39 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
40 |
+
if(file_exists(ABSPATH . 'wp-admin'.DS.'includes'.DS.'plugin.php')){
|
41 |
+
require_once( ABSPATH . 'wp-admin'.DS.'includes'.DS.'plugin.php' );
|
42 |
+
}
|
43 |
+
}
|
44 |
+
if (function_exists( 'get_plugins' ) ) {
|
45 |
+
if(!$plugin_name) $plugin_name='wysija-newsletters/index.php';
|
46 |
+
$plugin_file = WP_PLUGIN_DIR . DS . str_replace('/',DS,$plugin_name);
|
47 |
+
$plugin_data = get_plugin_data( $plugin_file );
|
48 |
+
$versions[$plugin_name] = $plugin_data['Version'];
|
49 |
+
}else{
|
50 |
+
$versions[$plugin_name]='undefined';
|
51 |
+
}
|
52 |
+
return $versions[$plugin_name];
|
53 |
+
}
|
54 |
+
|
55 |
+
|
56 |
+
|
57 |
+
/**
|
58 |
+
* get the current_user data in a safe manner making sure a field exists before returning it's value
|
59 |
+
* @global type $current_user
|
60 |
+
* @param string $field
|
61 |
+
* @return mixed
|
62 |
+
*/
|
63 |
+
public static function wp_get_userdata($field=false){
|
64 |
+
//WordPress globals be careful there
|
65 |
+
global $current_user;
|
66 |
+
if($field){
|
67 |
+
if(function_exists('get_currentuserinfo')) get_currentuserinfo();
|
68 |
+
if(isset($current_user->$field))
|
69 |
+
return $current_user->$field;
|
70 |
+
elseif(isset($current_user->data->$field))
|
71 |
+
return $current_user->data->$field;
|
72 |
+
else{
|
73 |
+
return $current_user;
|
74 |
+
}
|
75 |
+
}
|
76 |
+
return $current_user;
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* set a global notice message
|
81 |
+
* @global array $wysija_wpmsg
|
82 |
+
* @param type $msg
|
83 |
+
*/
|
84 |
+
function wp_notice($msg){
|
85 |
+
global $wysija_wpmsg;
|
86 |
+
|
87 |
+
//add the hook only once
|
88 |
+
if(!$wysija_wpmsg) add_action('admin_notices', array($this,'wp_msgs'));
|
89 |
+
|
90 |
+
//record msgs
|
91 |
+
$wysija_wpmsg['updated'][]=$msg;
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* set a global error message
|
96 |
+
* @global array $wysija_wpmsg
|
97 |
+
* @param type $msg
|
98 |
+
*/
|
99 |
+
function wp_error($msg){
|
100 |
+
global $wysija_wpmsg;
|
101 |
+
|
102 |
+
//add the hook only once
|
103 |
+
if(!$wysija_wpmsg) add_action('admin_notices', array($this,'wp_msgs'));
|
104 |
+
|
105 |
+
//record msgs
|
106 |
+
$wysija_wpmsg['error'][]=$msg;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* prints a global message in the WordPress' backend identified as belonging to wysija
|
111 |
+
* we tend to avoid as much as possible printing messages globally, since this is ugly
|
112 |
+
* and make the administrators immune to beige-yellowish messages :/
|
113 |
+
* @global array $wysija_wpmsg
|
114 |
+
*/
|
115 |
+
function wp_msgs() {
|
116 |
+
global $wysija_wpmsg;
|
117 |
+
foreach($wysija_wpmsg as $keymsg => $wp2){
|
118 |
+
$msgs= '<div class="'.$keymsg.' fade">';
|
119 |
+
foreach($wp2 as $mymsg)
|
120 |
+
$msgs.= '<p><strong>MailPoet</strong> : '.$mymsg.'</p>';
|
121 |
+
$msgs.= '</div>';
|
122 |
+
}
|
123 |
+
|
124 |
+
echo $msgs;
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* returns an error message, it will appear as a red pinkish message in our interfaces
|
129 |
+
* @param string $msg
|
130 |
+
* @param boolean $public if set to true it will appear as a full message, otherwise it will appear behind a "Show more details." link
|
131 |
+
* @param boolean $global if set to true it will appear on all of the backend interfaces, not only wysija's own
|
132 |
+
*/
|
133 |
+
function error($msg,$public=false,$global=false){
|
134 |
+
$status='error';
|
135 |
+
if($global) $status='g-'.$status;
|
136 |
+
$this->setInfo($status,$msg,$public);
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* returns a success message, it will appear as a beige yellowish message in our interfaces
|
141 |
+
* @param string $msg
|
142 |
+
* @param boolean $public if set to true it will appear as a full message, otherwise it will appear behind a "Show more details." link
|
143 |
+
* @param boolean $global if set to true it will appear on all of the backend interfaces, not only wysija's own
|
144 |
+
*/
|
145 |
+
function notice($msg,$public=true,$global=false){
|
146 |
+
$status = 'updated';
|
147 |
+
if($global) $status='g-'.$status;
|
148 |
+
$this->setInfo($status,$msg,$public);
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* store all of the error and success messages in a global variable
|
153 |
+
* @global type $wysija_msg
|
154 |
+
* @param type $status whether this is a success message or an error message
|
155 |
+
* @param type $msg
|
156 |
+
* @param type $public if set to true it will appear as a full message, otherwise it will appear behind a "Show more details." link
|
157 |
+
*/
|
158 |
+
static function setInfo($status,$msg,$public=false){
|
159 |
+
global $wysija_msg;
|
160 |
+
if(!$public) {
|
161 |
+
|
162 |
+
if(!isset($wysija_msg['private'][$status])){
|
163 |
+
$wysija_msg['private']=array();
|
164 |
+
$wysija_msg['private'][$status]=array();
|
165 |
+
}
|
166 |
+
array_push($wysija_msg['private'][$status], $msg);
|
167 |
+
}else{
|
168 |
+
if(!isset($wysija_msg[$status])) $wysija_msg[$status]=array();
|
169 |
+
array_push($wysija_msg[$status], $msg);
|
170 |
+
}
|
171 |
+
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* read the global function containing all of the error messages and print them
|
176 |
+
* @global type $wysija_msg
|
177 |
+
* @return type
|
178 |
+
*/
|
179 |
+
function getMsgs(){
|
180 |
+
global $wysija_msg;
|
181 |
+
|
182 |
+
if(isset($wysija_msg['private']['error'])){
|
183 |
+
$wysija_msg['error'][]=str_replace(array('[link]','[/link]'),array('<a class="showerrors" href="javascript:;">','</a>'),__('An error occured. [link]Show more details.[/link]',WYSIJA));
|
184 |
+
}
|
185 |
+
|
186 |
+
if(isset($wysija_msg['private']['updated'])){
|
187 |
+
$wysija_msg['updated'][]=str_replace(array('[link]','[/link]'),array('<a class="shownotices" href="javascript:;">','</a>'),__('[link]Show more details.[/link]',WYSIJA));
|
188 |
+
}
|
189 |
+
if(isset($wysija_msg['private'])){
|
190 |
+
$prv=$wysija_msg['private'];
|
191 |
+
unset($wysija_msg['private']);
|
192 |
+
if(isset($prv['error'])) $wysija_msg['xdetailed-errors']=$prv['error'];
|
193 |
+
if(isset($prv['updated'])) $wysija_msg['xdetailed-updated']=$prv['updated'];
|
194 |
+
}
|
195 |
+
return $wysija_msg;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
+
|
200 |
+
class WYSIJA_help extends WYSIJA_object{
|
201 |
+
var $controller=null;
|
202 |
+
|
203 |
+
static $admin_body_class_runner = false;
|
204 |
+
|
205 |
+
function WYSIJA_help(){
|
206 |
+
|
207 |
+
if(!defined('DOING_AJAX')){
|
208 |
+
add_action('init', array($this, 'register_scripts'), 1);
|
209 |
+
}
|
210 |
+
add_action('widgets_init', array($this, 'widgets_init'), 1);
|
211 |
+
|
212 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
|
213 |
+
add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
|
214 |
+
}
|
215 |
+
|
216 |
+
function widgets_init() {
|
217 |
+
//load the widget file
|
218 |
+
require_once(WYSIJA_WIDGETS.'wysija_nl.php');
|
219 |
+
register_widget('WYSIJA_NL_Widget');
|
220 |
+
}
|
221 |
+
|
222 |
+
public function admin_enqueue_scripts(){
|
223 |
+
if(WYSIJA_ITF){
|
224 |
+
wp_enqueue_script( 'mailpoet-global' );
|
225 |
+
}
|
226 |
+
wp_enqueue_style('mailpoet-dashicons');
|
227 |
+
}
|
228 |
+
|
229 |
+
public function admin_body_class( $body_class_str ){
|
230 |
+
|
231 |
+
if ( WYSIJA_help::$admin_body_class_runner === true )
|
232 |
+
return $body_class_str;
|
233 |
+
|
234 |
+
WYSIJA_help::$admin_body_class_runner = true;
|
235 |
+
|
236 |
+
global $wp_version;
|
237 |
+
|
238 |
+
$class = array();
|
239 |
+
if ( ! empty( $body_class_str ) ){
|
240 |
+
$class = explode( ' ', $body_class_str );
|
241 |
+
}
|
242 |
+
|
243 |
+
if ( '3.8' === $wp_version ){
|
244 |
+
$class[] = 'mp-menu-icon-font';
|
245 |
+
}
|
246 |
+
|
247 |
+
if ( version_compare( $wp_version, '3.8', '<' ) ){
|
248 |
+
$class[] = 'mp-menu-icon-bg';
|
249 |
+
}
|
250 |
+
|
251 |
+
return implode( ' ', $class );
|
252 |
+
}
|
253 |
+
|
254 |
+
function register_scripts(){
|
255 |
+
$helper_toolbox = WYSIJA::get('toolbox','helper');
|
256 |
+
$wp_language_code = $helper_toolbox->get_language_code();
|
257 |
+
|
258 |
+
if(file_exists(WYSIJA_DIR.'js'.DS.'validate'.DS.'languages'.DS.'jquery.validationEngine-'.$wp_language_code.'.js')){
|
259 |
+
wp_register_script('wysija-validator-lang',WYSIJA_URL.'js/validate/languages/jquery.validationEngine-'.$wp_language_code.'.js', array( 'jquery' ),WYSIJA::get_version(),true );
|
260 |
+
}else{
|
261 |
+
wp_register_script('wysija-validator-lang',WYSIJA_URL.'js/validate/languages/jquery.validationEngine-en.js', array( 'jquery' ),WYSIJA::get_version(),true );
|
262 |
+
}
|
263 |
+
wp_register_script('wysija-validator',WYSIJA_URL.'js/validate/jquery.validationEngine.js', array( 'jquery' ),WYSIJA::get_version(),true );
|
264 |
+
wp_register_script('wysija-front-subscribers', WYSIJA_URL.'js/front-subscribers.js', array( 'jquery' ),WYSIJA::get_version(),true);
|
265 |
+
|
266 |
+
wp_register_style( 'mailpoet-dashicons', WYSIJA_URL . 'css/admin-dashicons.css', array(), WYSIJA::get_version() );
|
267 |
+
|
268 |
+
wp_register_script('wysija-form', WYSIJA_URL.'js/forms.js', array( 'jquery' ),WYSIJA::get_version());
|
269 |
+
wp_register_style('validate-engine-css',WYSIJA_URL.'css/validationEngine.jquery.css',array(),WYSIJA::get_version());
|
270 |
+
wp_register_script('wysija-admin-ajax', WYSIJA_URL.'js/admin-ajax.js',array(),WYSIJA::get_version());
|
271 |
+
wp_register_script('wysija-admin-ajax-proto', WYSIJA_URL.'js/admin-ajax-proto.js',array(),WYSIJA::get_version());
|
272 |
+
wp_register_script( 'mailpoet-global', WYSIJA_URL.'js/admin-global.js', array( 'jquery', 'underscore' ), WYSIJA::get_version() );
|
273 |
+
|
274 |
+
if(defined('WYSIJA_SIDE') && WYSIJA_SIDE=='front') wp_enqueue_style('validate-engine-css');
|
275 |
+
|
276 |
+
}
|
277 |
+
|
278 |
+
|
279 |
+
/**
|
280 |
+
* when doing an ajax request in admin this is the first place we come to
|
281 |
+
*/
|
282 |
+
function ajax() {
|
283 |
+
|
284 |
+
$resultArray=array();
|
285 |
+
if(!$_REQUEST || !isset($_REQUEST['controller']) || !isset($_REQUEST['task'])){
|
286 |
+
$resultArray=array('result'=>false);
|
287 |
+
}else{
|
288 |
+
$wysijapp='wysija-newsletters';
|
289 |
+
if(isset($_REQUEST['wysijaplugin'])) $wysijapp=$_REQUEST['wysijaplugin'];
|
290 |
+
|
291 |
+
$this->controller=WYSIJA::get($_REQUEST['controller'],'controller', false, $wysijapp);
|
292 |
+
|
293 |
+
if(method_exists($this->controller, $_REQUEST['task'])){
|
294 |
+
$resultArray['result']=$this->controller->$_REQUEST['task']();
|
295 |
+
}else{
|
296 |
+
$this->error('Method "'.$_REQUEST['task'].'" doesn\'t exist for controller : "'.$_REQUEST['controller']);
|
297 |
+
}
|
298 |
+
}
|
299 |
+
|
300 |
+
$resultArray['msgs'] = $this->getMsgs();
|
301 |
+
|
302 |
+
//this header will allow ajax request from the home domain, this can be a lifesaver when domain mapping is on
|
303 |
+
if(function_exists('home_url')) header('Access-Control-Allow-Origin: '.home_url());
|
304 |
+
|
305 |
+
header('Content-type: application/json');
|
306 |
+
$jsonData = json_encode($resultArray);
|
307 |
+
|
308 |
+
//in some case scenario our client will have jquery forcing the jsonp so we need to adapt ourselves
|
309 |
+
if(isset($_REQUEST['callback'])) {
|
310 |
+
$hJSONP = WYSIJA::get('jsonp', 'helper');
|
311 |
+
if($hJSONP->isValidCallback($_REQUEST['callback'])) {
|
312 |
+
print $_REQUEST['callback'] . '('.$jsonData.');';
|
313 |
+
}
|
314 |
+
} else {
|
315 |
+
print $jsonData;
|
316 |
+
}
|
317 |
+
die();
|
318 |
+
}
|
319 |
+
}
|
320 |
+
|
321 |
+
|
322 |
+
class WYSIJA extends WYSIJA_object{
|
323 |
+
|
324 |
+
function WYSIJA(){
|
325 |
+
|
326 |
+
}
|
327 |
+
|
328 |
+
/**
|
329 |
+
* function created at the beginning to handle particular cases with WP get_permalink it got much smaller recently
|
330 |
+
* @param int $pageid
|
331 |
+
* @param array $params
|
332 |
+
* @param boolean $simple
|
333 |
+
* @return type
|
334 |
+
*/
|
335 |
+
public static function get_permalink($pageid,$params=array(),$simple=false){
|
336 |
+
$hWPtools=WYSIJA::get('wp_tools','helper');
|
337 |
+
return $hWPtools->get_permalink($pageid,$params,$simple);
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* translate the plugin
|
342 |
+
* @staticvar boolean $extensionloaded
|
343 |
+
* @param type $extendedplugin
|
344 |
+
* @return boolean
|
345 |
+
*/
|
346 |
+
public static function load_lang($extendedplugin=false){
|
347 |
+
static $extensionloaded = false;
|
348 |
+
|
349 |
+
//we return the entire array of extensions loaded if non is specified
|
350 |
+
if(!$extendedplugin) return $extensionloaded;
|
351 |
+
|
352 |
+
//we only need to load this translation loader once on init
|
353 |
+
if(!$extensionloaded){
|
354 |
+
add_action('init', array('WYSIJA','load_lang_init'));
|
355 |
+
}
|
356 |
+
//each plugin has a different name
|
357 |
+
if ( !$extensionloaded || !isset($extensionloaded[$extendedplugin])) {
|
358 |
+
$transstring = null;
|
359 |
+
switch($extendedplugin){
|
360 |
+
case 'wysija-newsletters':
|
361 |
+
$transstring=WYSIJA;
|
362 |
+
break;
|
363 |
+
case 'wysijashop':
|
364 |
+
$transstring=WYSIJASHOP;
|
365 |
+
break;
|
366 |
+
case 'wysijacrons':
|
367 |
+
$transstring=WYSIJACRONS;
|
368 |
+
break;
|
369 |
+
case 'wysija-newsletters-premium':
|
370 |
+
$transstring=WYSIJANLP;
|
371 |
+
break;
|
372 |
+
case 'get_all':
|
373 |
+
return $extensionloaded;
|
374 |
+
}
|
375 |
+
|
376 |
+
//store all the required translations to be loaded in the static variable
|
377 |
+
if($transstring !== null) {
|
378 |
+
$extensionloaded[$extendedplugin] = $transstring;
|
379 |
+
}
|
380 |
+
}
|
381 |
+
}
|
382 |
+
|
383 |
+
/**
|
384 |
+
* check if the user is tech support as this can be used to switch the language back to english when helping our customers
|
385 |
+
* @global type $current_user
|
386 |
+
* @param type $debugmode
|
387 |
+
* @return type
|
388 |
+
*/
|
389 |
+
public static function is_wysija_admin($debugmode=false){
|
390 |
+
//to allow wysija team members to work in english mode if debug is activated
|
391 |
+
global $current_user;
|
392 |
+
|
393 |
+
if((int)$debugmode>0 && empty($current_user)) return true;
|
394 |
+
|
395 |
+
if(isset($current_user->data->user_email) &&
|
396 |
+
(strpos($current_user->data->user_email, '@mailpoet.com') !== false)) {
|
397 |
+
return true;
|
398 |
+
}
|
399 |
+
return false;
|
400 |
+
}
|
401 |
+
|
402 |
+
/**
|
403 |
+
* this function exists just to fix the issue with qtranslate :/ (it only fix it partially)
|
404 |
+
* @param type $extendedplugin
|
405 |
+
*/
|
406 |
+
public static function load_lang_init($extendedplugin=false){
|
407 |
+
$config=WYSIJA::get('config','model');
|
408 |
+
$debugmode=(int)$config->getValue('debug_new');
|
409 |
+
if($debugmode==0 || ($debugmode>0 && !WYSIJA::is_wysija_admin($debugmode))){
|
410 |
+
$extensionloaded=WYSIJA::load_lang('get_all');
|
411 |
+
foreach($extensionloaded as $extendedplugin => $transstring){
|
412 |
+
$filename=WYSIJA_PLG_DIR.$extendedplugin.DS.'languages'.DS.$transstring.'-'.get_locale().'.mo';
|
413 |
+
if(file_exists($filename)) load_textdomain($transstring, $filename);
|
414 |
+
}
|
415 |
+
}
|
416 |
+
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* function to generate objects of different types, managing file requiring in order to be the most efficient
|
420 |
+
* @staticvar array $arrayOfObjects
|
421 |
+
* @param string $name
|
422 |
+
* @param string $type : in which folder do we go and pick the class
|
423 |
+
* @param boolean $force_side : this parameter is almost never set to true,
|
424 |
+
* it will be useful for instance if you want to get a back controller
|
425 |
+
* from the frontend, it was used maybe in the shop but it can be ignored for wysija-newsletters
|
426 |
+
* @param type $extended_plugin : used only when calling the url from a different plugin it is used watch those files :
|
427 |
+
* -core/controller.php line 21, 23 ,24
|
428 |
+
* @param type $load_lang : the load lang is in the get to be sure we don't forget to load the language file for each plugin at least once
|
429 |
+
* the way I see it it could be moved to the index.php of each plugin. for now only wysija-newsletters is translated anyway
|
430 |
+
* @return boolean
|
431 |
+
*/
|
432 |
+
public static function get($name,$type,$force_side=false,$extended_plugin='wysija-newsletters',$load_lang=true){
|
433 |
+
static $array_of_objects;
|
434 |
+
|
435 |
+
if($load_lang) WYSIJA::load_lang($extended_plugin);
|
436 |
+
|
437 |
+
// store all the objects made so that we can reuse them accross the application if the object is already set we return it immediately
|
438 |
+
if(isset($array_of_objects[$extended_plugin][$type.$name])) {
|
439 |
+
return $array_of_objects[$extended_plugin][$type.$name];
|
440 |
+
}
|
441 |
+
|
442 |
+
// which folder do we pick for controllersand views ? back or front ?
|
443 |
+
if($force_side) {
|
444 |
+
$side=$force_side;
|
445 |
+
} else {
|
446 |
+
$side=WYSIJA_SIDE;
|
447 |
+
}
|
448 |
+
|
449 |
+
// for each plugin we will define the $extended_constant variable if it's not defined already
|
450 |
+
// also we will defined the $extended_plugin_name which corresponds to the folder name and also will be used to build the class to be called
|
451 |
+
switch($extended_plugin){
|
452 |
+
case 'wysija-newsletters-premium':
|
453 |
+
$extended_constant='WYSIJANLP';
|
454 |
+
if(!defined($extended_constant)) define($extended_constant,$extended_constant);
|
455 |
+
$extended_plugin_name='wysijanlp';
|
456 |
+
break;
|
457 |
+
case 'wysija-newsletters':
|
458 |
+
$extended_constant='WYSIJA';
|
459 |
+
if(!defined($extended_constant)) define($extended_constant,$extended_constant);
|
460 |
+
$extended_plugin_name='wysija';
|
461 |
+
break;
|
462 |
+
default :
|
463 |
+
$extended_constant=strtoupper($extended_plugin);
|
464 |
+
if(!defined($extended_constant)) define($extended_constant,$extended_constant);
|
465 |
+
$extended_plugin_name=$extended_plugin;
|
466 |
+
}
|
467 |
+
|
468 |
+
// security to protect against dangerous ./../ includes
|
469 |
+
$name = preg_replace('#[^a-z0-9_]#i','',$name);
|
470 |
+
|
471 |
+
// this switch will require_once the file needed and build a the class name depending on the parameters passed to the function
|
472 |
+
switch($type){
|
473 |
+
case 'controller':
|
474 |
+
// require the parent class necessary
|
475 |
+
require_once(WYSIJA_CORE.'controller.php');
|
476 |
+
|
477 |
+
$ctrdir=WYSIJA_PLG_DIR.$extended_plugin.DS.'controllers'.DS;
|
478 |
+
// Require module concept
|
479 |
+
require_once(WYSIJA_CORE.'module'.DS.'module.php');
|
480 |
+
|
481 |
+
// if we are doing ajax we don't go to one side, ajax is for frontend or backend in the same folder
|
482 |
+
if(defined('DOING_AJAX')) {
|
483 |
+
$class_path=$ctrdir.'ajax'.DS.$name.'.php';
|
484 |
+
}else {
|
485 |
+
// the other controllers are called in a side folder back or front
|
486 |
+
$class_path=$ctrdir.$side.DS.$name.'.php';
|
487 |
+
// require the side specific controller file
|
488 |
+
require_once(WYSIJA_CTRL.$side.'.php');
|
489 |
+
}
|
490 |
+
$class_name = strtoupper($extended_plugin_name).'_control_'.$side.'_'.$name;
|
491 |
+
break;
|
492 |
+
case 'view':
|
493 |
+
$viewdir=WYSIJA_PLG_DIR.$extended_plugin.DS.'views'.DS;
|
494 |
+
// let's get the right path for the view front or back and the right class_name
|
495 |
+
$class_path=$viewdir.$side.DS.$name.'.php';
|
496 |
+
$class_name = strtoupper($extended_plugin_name).'_view_'.$side.'_'.$name;
|
497 |
+
|
498 |
+
// require the common view file and the side view file
|
499 |
+
require_once(WYSIJA_CORE.'view.php');
|
500 |
+
require_once(WYSIJA_VIEWS.$side.'.php');
|
501 |
+
break;
|
502 |
+
case 'helper':
|
503 |
+
$helpdir=WYSIJA_PLG_DIR.$extended_plugin.DS.'helpers'.DS;
|
504 |
+
$class_path=$helpdir.$name.'.php';
|
505 |
+
$class_name = strtoupper($extended_plugin_name).'_help_'.$name;
|
506 |
+
|
507 |
+
break;
|
508 |
+
case 'model':
|
509 |
+
$modeldir=WYSIJA_PLG_DIR.$extended_plugin.DS.'models'.DS;
|
510 |
+
$class_path=$modeldir.$name.'.php';
|
511 |
+
$class_name = strtoupper($extended_plugin_name).'_model_'.$name;
|
512 |
+
// require the parent class necessary
|
513 |
+
require_once(WYSIJA_CORE.'model.php');
|
514 |
+
break;
|
515 |
+
case 'widget':
|
516 |
+
$modeldir=WYSIJA_PLG_DIR.$extended_plugin.DS.'widgets'.DS;
|
517 |
+
$class_path=$modeldir.$name.'.php';
|
518 |
+
if($name=='wysija_nl') $class_name='WYSIJA_NL_Widget';
|
519 |
+
else $class_name = strtoupper($extended_plugin_name).'_widget_'.$name;
|
520 |
+
break;
|
521 |
+
|
522 |
+
case 'module':
|
523 |
+
$moduledir = WYSIJA_PLG_DIR . $extended_plugin . DS . 'modules' . DS;
|
524 |
+
if (file_exists($moduledir . $name . '.php'))
|
525 |
+
$class_path = $moduledir . $name . '.php';
|
526 |
+
elseif (file_exists($moduledir . $name . DS . $name . '.php'))
|
527 |
+
$class_path = $moduledir . $name . DS . $name . '.php';
|
528 |
+
else
|
529 |
+
return;
|
530 |
+
$class_name = strtoupper($extended_plugin_name) . '_module_' . $name;
|
531 |
+
// require the parent class necessary
|
532 |
+
//require_once(WYSIJA_CORE.'module'.DS.'module.php');
|
533 |
+
require_once(WYSIJA_CORE . 'module' . DS . 'statistics_model.php');
|
534 |
+
require_once(WYSIJA_CORE . 'module' . DS . 'statistics.php');
|
535 |
+
require_once(WYSIJA_CORE . 'module' . DS . 'statisticschart.php');
|
536 |
+
require_once(WYSIJA_CORE . 'module' . DS . 'statisticstable.php');
|
537 |
+
|
538 |
+
break;
|
539 |
+
|
540 |
+
default:
|
541 |
+
WYSIJA::setInfo('error','WYSIJA::get does not accept this type of file "'.$type.'" .');
|
542 |
+
return false;
|
543 |
+
}
|
544 |
+
|
545 |
+
if(!file_exists($class_path)) {
|
546 |
+
WYSIJA::setInfo('error','file has not been recognised '.$class_path);
|
547 |
+
WYSIJA::setInfo('error',$class_name);
|
548 |
+
WYSIJA::setInfo('error',$type);
|
549 |
+
return;
|
550 |
+
}
|
551 |
+
|
552 |
+
// require the file needed once and store & return the object needed
|
553 |
+
require_once($class_path);
|
554 |
+
return $array_of_objects[$extended_plugin][$type.$name]=new $class_name($extended_plugin_name);
|
555 |
+
|
556 |
+
}
|
557 |
+
|
558 |
+
/**
|
559 |
+
* log function to spot some strange issues when sending emails for instance
|
560 |
+
* @param type $key
|
561 |
+
* @param type $data
|
562 |
+
* @param type $category
|
563 |
+
* @return type
|
564 |
+
*/
|
565 |
+
public static function log($key='default',$data='empty',$category='default'){
|
566 |
+
$config=WYSIJA::get('config','model');
|
567 |
+
|
568 |
+
if((int)$config->getValue('debug_new')>1 && $category && $config->getValue('debug_log_'.$category)){
|
569 |
+
|
570 |
+
$optionlog=get_option('wysija_log');
|
571 |
+
|
572 |
+
|
573 |
+
$optionlog[$category][(string)microtime(true)][$key]=$data;
|
574 |
+
|
575 |
+
WYSIJA::update_option('wysija_log' , $optionlog);
|
576 |
+
}
|
577 |
+
return false;
|
578 |
+
}
|
579 |
+
|
580 |
+
/**
|
581 |
+
* the filter to add option to the cron frequency instead of being stuck with hourly, daily and twicedaily...
|
582 |
+
* we can add filters but we cannot delete other values such as the default ones, as this might break other plugins crons
|
583 |
+
* @param type $param
|
584 |
+
* @return type
|
585 |
+
*/
|
586 |
+
public static function filter_cron_schedules( $param ) {
|
587 |
+
$frequencies=array(
|
588 |
+
'one_min' => array(
|
589 |
+
'interval' => 60,
|
590 |
+
'display' => __( 'Once every minute',WYSIJA)
|
591 |
+
),
|
592 |
+
'two_min' => array(
|
593 |
+
'interval' => 120,
|
594 |
+
'display' => __( 'Once every two minutes',WYSIJA)
|
595 |
+
),
|
596 |
+
'five_min' => array(
|
597 |
+
'interval' => 300,
|
598 |
+
'display' => __( 'Once every five minutes',WYSIJA)
|
599 |
+
),
|
600 |
+
'ten_min' => array(
|
601 |
+
'interval' => 600,
|
602 |
+
'display' => __( 'Once every ten minutes',WYSIJA)
|
603 |
+
),
|
604 |
+
'fifteen_min' => array(
|
605 |
+
'interval' => 900,
|
606 |
+
'display' => __( 'Once every fifteen minutes',WYSIJA)
|
607 |
+
),
|
608 |
+
'thirty_min' => array(
|
609 |
+
'interval' => 1800,
|
610 |
+
'display' => __( 'Once every thirty minutes',WYSIJA)
|
611 |
+
),
|
612 |
+
'two_hours' => array(
|
613 |
+
'interval' => 7200,
|
614 |
+
'display' => __( 'Once every two hours',WYSIJA)
|
615 |
+
),
|
616 |
+
'eachweek' => array(
|
617 |
+
'interval' => 604800,
|
618 |
+
'display' => __( 'Once a week',WYSIJA)
|
619 |
+
),
|
620 |
+
'each28days' => array(
|
621 |
+
'interval' => 2419200,
|
622 |
+
'display' => __( 'Once every 28 days',WYSIJA)
|
623 |
+
),
|
624 |
+
);
|
625 |
+
|
626 |
+
return array_merge($param, $frequencies);
|
627 |
+
}
|
628 |
+
|
629 |
+
/**
|
630 |
+
* scheduled task for sending the emails in the queue, the frequency is set in the settings
|
631 |
+
*/
|
632 |
+
public static function croned_queue( $check_scheduled_newsletter = true) {
|
633 |
+
|
634 |
+
// check the scheduled tasks only if it's a standard WP scheduled task free only
|
635 |
+
if($check_scheduled_newsletter){
|
636 |
+
WYSIJA::check_scheduled_newsletters();
|
637 |
+
}
|
638 |
+
|
639 |
+
$model_config = WYSIJA::get('config','model');
|
640 |
+
// check that the 2000 limit is not passed and process the queue
|
641 |
+
|
642 |
+
if((int)$model_config->getValue('total_subscribers') < 2000 ){
|
643 |
+
$helper_queue = WYSIJA::get('queue','helper');
|
644 |
+
$helper_queue->report=false;
|
645 |
+
WYSIJA::log('croned_queue process',true,'cron');
|
646 |
+
|
647 |
+
$helper_queue->process();
|
648 |
+
}
|
649 |
+
|
650 |
+
}
|
651 |
+
|
652 |
+
public static function check_scheduled_newsletters(){
|
653 |
+
$last_scheduled_check = get_option('wysija_last_scheduled_check');
|
654 |
+
|
655 |
+
// if the latest post notification check was done more than five minutes ago let's check it again
|
656 |
+
if(empty($last_scheduled_check) || ( time() > ($last_scheduled_check + 300) ) ){
|
657 |
+
// create the scheduled automatic post notifications email if there are any
|
658 |
+
$helper_autonews = WYSIJA::get('autonews','helper');
|
659 |
+
$helper_autonews->checkPostNotif();
|
660 |
+
|
661 |
+
// queue the scheduled newsletter also if there are any
|
662 |
+
$helper_autonews->checkScheduled();
|
663 |
+
WYSIJA::update_option('wysija_last_scheduled_check', time());
|
664 |
+
}
|
665 |
+
|
666 |
+
// send daily report about emails sent
|
667 |
+
$model_config = WYSIJA::get('config','model');
|
668 |
+
if($model_config->getValue('emails_notified_when_dailysummary')){
|
669 |
+
$helper_notification = WYSIJA::get('notifications','helper');
|
670 |
+
$helper_notification->send_daily_report();
|
671 |
+
}
|
672 |
+
|
673 |
+
}
|
674 |
+
|
675 |
+
|
676 |
+
/**
|
677 |
+
* everyday we make sure not to leave any trash files
|
678 |
+
* remove temporary files
|
679 |
+
*/
|
680 |
+
public static function croned_daily() {
|
681 |
+
|
682 |
+
@ini_set('max_execution_time',0);
|
683 |
+
|
684 |
+
/*user refresh count total*/
|
685 |
+
$helper_user = WYSIJA::get('user','helper');
|
686 |
+
$helper_user->refreshUsers();
|
687 |
+
|
688 |
+
/*user domain generation*/
|
689 |
+
$helper_user->generate_domains();
|
690 |
+
|
691 |
+
/*clear temporary folders*/
|
692 |
+
$helper_file = WYSIJA::get('file','helper');
|
693 |
+
$helper_file->clear();
|
694 |
+
|
695 |
+
/*clear queue from unsubscribed*/
|
696 |
+
$helper_queue = WYSIJA::get('queue','helper');
|
697 |
+
$helper_queue->clear();
|
698 |
+
|
699 |
+
|
700 |
+
}
|
701 |
+
|
702 |
+
// Weekly cron
|
703 |
+
public static function croned_weekly() {
|
704 |
+
|
705 |
+
@ini_set('max_execution_time',0);
|
706 |
+
|
707 |
+
$model_config = WYSIJA::get('config','model');
|
708 |
+
|
709 |
+
// If enabled, flag MixPanel sending on next page load.
|
710 |
+
if ($model_config->getValue('analytics') == 1) {
|
711 |
+
$model_config->save(array('send_analytics_now' => 1));
|
712 |
+
}
|
713 |
+
|
714 |
+
}
|
715 |
+
|
716 |
+
// Monthly cron
|
717 |
+
public static function croned_monthly() {
|
718 |
+
|
719 |
+
@ini_set('max_execution_time',0);
|
720 |
+
|
721 |
+
$model_config = WYSIJA::get('config','model');
|
722 |
+
|
723 |
+
/* send daily report about emails sent */
|
724 |
+
if ($model_config->getValue('sharedata')) {
|
725 |
+
$helper_stats = WYSIJA::get('stats','helper');
|
726 |
+
$helper_stats->share();
|
727 |
+
}
|
728 |
+
|
729 |
+
}
|
730 |
+
|
731 |
+
/**
|
732 |
+
* when we deactivate the plugin we clear the WP install from those cron records
|
733 |
+
*/
|
734 |
+
public static function deactivate() {
|
735 |
+
wp_clear_scheduled_hook('wysija_cron_queue');
|
736 |
+
wp_clear_scheduled_hook('wysija_cron_bounce');
|
737 |
+
wp_clear_scheduled_hook('wysija_cron_daily');
|
738 |
+
wp_clear_scheduled_hook('wysija_cron_weekly');
|
739 |
+
wp_clear_scheduled_hook('wysija_cron_monthly');
|
740 |
+
}
|
741 |
+
|
742 |
+
|
743 |
+
/**
|
744 |
+
* wysija's redirect allows to save some variables for the next page load such as notices etc..
|
745 |
+
* @global type $wysija_msg
|
746 |
+
* @global type $wysija_queries
|
747 |
+
* @global type $wysija_queries_errors
|
748 |
+
* @param type $location
|
749 |
+
*/
|
750 |
+
public static function redirect($location) {
|
751 |
+
//save the messages
|
752 |
+
global $wysija_msg,$wysija_queries,$wysija_queries_errors;
|
753 |
+
WYSIJA::update_option('wysija_msg',$wysija_msg);
|
754 |
+
WYSIJA::update_option('wysija_queries',$wysija_queries);
|
755 |
+
WYSIJA::update_option('wysija_queries_errors',$wysija_queries_errors);
|
756 |
+
|
757 |
+
// make sure we encode square brackets as wp_redirect will strip them off
|
758 |
+
$location = str_replace(array('[', ']'), array('%5B', '%5D'), $location);
|
759 |
+
|
760 |
+
// redirect to specified location
|
761 |
+
wp_redirect($location);
|
762 |
+
exit;
|
763 |
+
}
|
764 |
+
|
765 |
+
/**
|
766 |
+
* custom post type for wysija is call wysijap as in wysija's post
|
767 |
+
*/
|
768 |
+
public static function create_post_type() {
|
769 |
+
|
770 |
+
//by default there is url rewriteing on wysijap custom post, though in one client case I had to deactivate it.
|
771 |
+
//as this is rare we just need to set this setting to activate it
|
772 |
+
//by default let's deactivate the url rewriting of the wysijap confirmation page because it is breaking in some case.
|
773 |
+
$show_interface=false;
|
774 |
+
if(defined('WYSIJA_DBG') && WYSIJA_DBG>1) $show_interface=true;
|
775 |
+
register_post_type( 'wysijap',
|
776 |
+
array(
|
777 |
+
'labels' => array(
|
778 |
+
'name' => __('MailPoet page'),
|
779 |
+
'singular_name' => __('MailPoet page')
|
780 |
+
),
|
781 |
+
'public' => true,
|
782 |
+
'has_archive' => false,
|
783 |
+
'show_ui' =>$show_interface,
|
784 |
+
'show_in_menu' =>$show_interface,
|
785 |
+
'rewrite' => false,
|
786 |
+
'show_in_nav_menus'=>false,
|
787 |
+
'can_export'=>false,
|
788 |
+
'publicly_queryable'=>true,
|
789 |
+
'exclude_from_search'=>true,
|
790 |
+
)
|
791 |
+
);
|
792 |
+
|
793 |
+
if(!get_option('wysija_post_type_updated')) {
|
794 |
+
$modelPosts=new WYSIJA_model();
|
795 |
+
$modelPosts->tableWP=true;
|
796 |
+
$modelPosts->table_prefix='';
|
797 |
+
$modelPosts->table_name='posts';
|
798 |
+
$modelPosts->noCheck=true;
|
799 |
+
$modelPosts->pk='ID';
|
800 |
+
if($modelPosts->exists(array('post_type'=>'wysijapage'))){
|
801 |
+
$modelPosts->update(array('post_type'=>'wysijap'),array('post_type'=>'wysijapage'));
|
802 |
+
flush_rewrite_rules( false );
|
803 |
+
}
|
804 |
+
WYSIJA::update_option('wysija_post_type_updated',time());
|
805 |
+
}
|
806 |
+
|
807 |
+
if(!get_option('wysija_post_type_created')) {
|
808 |
+
flush_rewrite_rules( false );
|
809 |
+
WYSIJA::update_option('wysija_post_type_created',time());
|
810 |
+
}
|
811 |
+
|
812 |
+
}
|
813 |
+
|
814 |
+
/**
|
815 |
+
* wysija update_option function is very similar to WordPress' one but it
|
816 |
+
* can also manage new options not automatically loaded each time
|
817 |
+
* @param type $option_name
|
818 |
+
* @param type $newvalue
|
819 |
+
* @param type $defaultload this parameter is the advantage other Wp's update_option here
|
820 |
+
*/
|
821 |
+
public static function update_option($option_name,$newvalue,$defaultload='no'){
|
822 |
+
if ( get_option( $option_name ) != $newvalue ) {
|
823 |
+
update_option( $option_name, $newvalue );
|
824 |
+
} else {
|
825 |
+
add_option( $option_name, $newvalue, '', $defaultload );
|
826 |
+
}
|
827 |
+
}
|
828 |
+
|
829 |
+
/**
|
830 |
+
* When a WordPress user is added we also need to add it to the subscribers list
|
831 |
+
* @param type $user_id
|
832 |
+
* @return type
|
833 |
+
*/
|
834 |
+
public static function hook_add_WP_subscriber($user_id) {
|
835 |
+
$data=get_userdata($user_id);
|
836 |
+
|
837 |
+
|
838 |
+
//check first if a subscribers exists if it doesn't then let's insert it
|
839 |
+
$model_config=WYSIJA::get('config','model');
|
840 |
+
$model_user=WYSIJA::get('user','model');
|
841 |
+
$model_user->getFormat=ARRAY_A; // there is one case where we were getting an object instead of an array
|
842 |
+
$subscriber_exists=$model_user->getOne(array('user_id'),array('email'=>$data->user_email));
|
843 |
+
|
844 |
+
$first_name=$data->first_name;
|
845 |
+
$last_name=$data->last_name;
|
846 |
+
if(!$data->first_name && !$data->last_name) $first_name=$data->display_name;
|
847 |
+
|
848 |
+
$model_user->reset();
|
849 |
+
if($subscriber_exists){
|
850 |
+
$user_id=$subscriber_exists['user_id'];
|
851 |
+
// we need to update the current subscriber using it's id
|
852 |
+
$model_user->update(array('wpuser_id'=>$data->ID,'firstname'=>$first_name,'lastname'=>$last_name),array('user_id'=>$user_id));
|
853 |
+
}else{
|
854 |
+
$model_user->noCheck=true;
|
855 |
+
$user_id=$model_user->insert(array('email'=>$data->user_email,'wpuser_id'=>$data->ID,'firstname'=>$first_name,'lastname'=>$last_name,'status'=>$model_config->getValue('confirm_dbleoptin')));
|
856 |
+
}
|
857 |
+
|
858 |
+
$model_user_list=WYSIJA::get('user_list','model');
|
859 |
+
$model_user_list->insert(array('user_id'=>$user_id,'list_id'=>$model_config->getValue('importwp_list_id'),'sub_date'=>time()),true);
|
860 |
+
|
861 |
+
$helper_user=WYSIJA::get('user','helper');
|
862 |
+
$helper_user->sendAutoNl($user_id,$data,'new-user');
|
863 |
+
return true;
|
864 |
+
}
|
865 |
+
|
866 |
+
/**
|
867 |
+
* when a WordPress user is updated we also need to update the corresponding subscriber
|
868 |
+
* @param type $user_id
|
869 |
+
* @return type
|
870 |
+
*/
|
871 |
+
public static function hook_edit_WP_subscriber($user_id) {
|
872 |
+
$data=get_userdata($user_id);
|
873 |
+
|
874 |
+
//check first if a subscribers exists if it doesn't then let's insert it
|
875 |
+
$model_user=WYSIJA::get('user','model');
|
876 |
+
$model_config=WYSIJA::get('config','model');
|
877 |
+
$model_user_list=WYSIJA::get('user_list','model');
|
878 |
+
$model_user->getFormat = ARRAY_A;
|
879 |
+
$subscriber_exists=$model_user->getOne(array('user_id'),array('email'=>$data->user_email));
|
880 |
+
|
881 |
+
$model_user->reset();
|
882 |
+
|
883 |
+
$first_name=$data->first_name;
|
884 |
+
$last_name=$data->last_name;
|
885 |
+
if(!$data->first_name && !$data->last_name) $first_name=$data->display_name;
|
886 |
+
|
887 |
+
if($subscriber_exists){
|
888 |
+
$user_id=$subscriber_exists['user_id'];
|
889 |
+
|
890 |
+
$model_user->update(array('wpuser_id'=>$data->ID, 'email'=>$data->user_email,'firstname'=>$first_name,'lastname'=>$last_name),array('user_id'=>$user_id));
|
891 |
+
|
892 |
+
$result=$model_user_list->getOne(false,array('user_id'=>$user_id,'list_id'=>$model_config->getValue('importwp_list_id')));
|
893 |
+
$model_user_list->reset();
|
894 |
+
if(!$result)
|
895 |
+
$model_user_list->insert(array('user_id'=>$user_id,'list_id'=>$model_config->getValue('importwp_list_id'),'sub_date'=>time()));
|
896 |
+
}else{
|
897 |
+
//chck that we didnt update the email
|
898 |
+
$subscriber_exists=$model_user->getOne(false,array('wpuser_id'=>$data->ID));
|
899 |
+
|
900 |
+
if($subscriber_exists){
|
901 |
+
$user_id=$subscriber_exists['user_id'];
|
902 |
+
|
903 |
+
$model_user->update(array('email'=>$data->user_email,'firstname'=>$first_name,'lastname'=>$last_name),array('wpuser_id'=>$data->ID));
|
904 |
+
|
905 |
+
$result=$model_user_list->getOne(false,array('user_id'=>$user_id,'list_id'=>$model_config->getValue('importwp_list_id')));
|
906 |
+
$model_user_list->reset();
|
907 |
+
if(!$result)
|
908 |
+
$model_user_list->insert(array('user_id'=>$user_id,'list_id'=>$model_config->getValue('importwp_list_id'),'sub_date'=>time()));
|
909 |
+
}else{
|
910 |
+
$model_user->noCheck=true;
|
911 |
+
$user_id=$model_user->insert(array('email'=>$data->user_email,'wpuser_id'=>$data->ID,'firstname'=>$first_name,'lastname'=>$last_name,'status'=>$model_config->getValue('confirm_dbleoptin')));
|
912 |
+
$model_user_list->insert(array('user_id'=>$user_id,'list_id'=>$model_config->getValue('importwp_list_id'),'sub_date'=>time()));
|
913 |
+
}
|
914 |
+
}
|
915 |
+
return true;
|
916 |
+
}
|
917 |
+
|
918 |
+
/**
|
919 |
+
* when a wp user is deleted we also delete the subscriber corresponding to it
|
920 |
+
* @param type $user_id
|
921 |
+
*/
|
922 |
+
public static function hook_del_WP_subscriber($user_id) {
|
923 |
+
$model_config=WYSIJA::get('config','model');
|
924 |
+
$model_user=WYSIJA::get('user','model');
|
925 |
+
$data = $model_user->getOne(array('email','user_id'),array('wpuser_id'=>$user_id));
|
926 |
+
if(isset($data['email'])) {
|
927 |
+
$model_user->delete(array('email'=>$data['email']));
|
928 |
+
}
|
929 |
+
if(isset($data['user_id'])) {
|
930 |
+
$model_user = WYSIJA::get('user_list','model');
|
931 |
+
$model_user->delete(array('user_id'=>$data['user_id'],'list_id'=>$model_config->getValue('importwp_list_id')));
|
932 |
+
}
|
933 |
+
}
|
934 |
+
|
935 |
+
|
936 |
+
public static function hook_auto_newsletter_refresh($post_id) {
|
937 |
+
$helper_autonews = WYSIJA::get('autonews', 'helper');
|
938 |
+
$helper_autonews->refresh_automatic_content();
|
939 |
+
|
940 |
+
return true;
|
941 |
+
}
|
942 |
+
|
943 |
+
/**
|
944 |
+
* post notification transition hook, know when a post really gets published
|
945 |
+
* @param type $new_status
|
946 |
+
* @param type $old_status
|
947 |
+
* @param type $post
|
948 |
+
* @return type
|
949 |
+
*/
|
950 |
+
public static function hook_postNotification_transition($new_status, $old_status, $post) {
|
951 |
+
//we run some process only if the status of the post changes from something to publish
|
952 |
+
if($new_status === 'publish' && $old_status !== $new_status) {
|
953 |
+
$model_email = WYSIJA::get('email', 'model');
|
954 |
+
$emails = $model_email->get(false, array('type' => 2, 'status' => array(1, 3, 99)));
|
955 |
+
|
956 |
+
if(!empty($emails)) {
|
957 |
+
//we loop through all of the automatic emails
|
958 |
+
foreach($emails as $key => $email) {
|
959 |
+
|
960 |
+
//we will try to give birth to a child email only if the automatic newsletter is a post notification email and in immediate mode
|
961 |
+
if(is_array($email) && $email['params']['autonl']['event'] === 'new-articles' && $email['params']['autonl']['when-article'] === 'immediate') {
|
962 |
+
// set default include/exclude categories
|
963 |
+
$include_category_ids = array();
|
964 |
+
$exclude_category_ids = array();
|
965 |
+
|
966 |
+
// get included categories
|
967 |
+
if(isset($email['params']['autonl']['include_category_ids']) && !empty($email['params']['autonl']['include_category_ids'])) {
|
968 |
+
$include_category_ids = $email['params']['autonl']['include_category_ids'];
|
969 |
+
}
|
970 |
+
// get excluded categories
|
971 |
+
if(isset($email['params']['autonl']['exclude_category_ids']) && !empty($email['params']['autonl']['exclude_category_ids'])) {
|
972 |
+
$exclude_category_ids = $email['params']['autonl']['exclude_category_ids'];
|
973 |
+
}
|
974 |
+
|
975 |
+
// get post categories
|
976 |
+
//$post_categories = wp_get_post_categories($post->ID);
|
977 |
+
$helper_wp_tools = WYSIJA::get('wp_tools', 'helper');
|
978 |
+
$post_categories = $helper_wp_tools->get_post_category_ids($post);
|
979 |
+
|
980 |
+
// assume the post has to be sent
|
981 |
+
$do_send_post = true;
|
982 |
+
|
983 |
+
// post categories have to match at least one of the email's included categories
|
984 |
+
$include_intersection = array_intersect($post_categories, $include_category_ids);
|
985 |
+
if(!empty($include_category_ids) && empty($include_intersection)) {
|
986 |
+
$do_send_post = false;
|
987 |
+
}
|
988 |
+
|
989 |
+
$exclude_intersection = array_intersect($post_categories, $exclude_category_ids);
|
990 |
+
// post categories should not match any one of the email's excluded categories
|
991 |
+
if(!empty($exclude_category_ids) && !empty($exclude_intersection)) {
|
992 |
+
$do_send_post = false;
|
993 |
+
}
|
994 |
+
|
995 |
+
if($do_send_post) {
|
996 |
+
WYSIJA::log('post_transition_hook_give_birth',array('postID'=>$post->ID,'postID'=>$post->post_title,'old_status'=>$old_status,'new_status'=>$new_status),'post_notif');
|
997 |
+
$model_email->reset();
|
998 |
+
$model_email->give_birth($email, $post->ID);
|
999 |
+
}
|
1000 |
+
}
|
1001 |
+
}
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
// we check for automatic latest content widget in automatic newsletter
|
1005 |
+
$helper_autonews = WYSIJA::get('autonews', 'helper');
|
1006 |
+
$helper_autonews->refresh_automatic_content();
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
return true;
|
1010 |
+
}
|
1011 |
+
|
1012 |
+
/**
|
1013 |
+
* uninstall process not used
|
1014 |
+
*/
|
1015 |
+
public static function uninstall(){
|
1016 |
+
$helperUS=WYSIJA::get('uninstall','helper');
|
1017 |
+
$helperUS->uninstall();
|
1018 |
+
}
|
1019 |
+
|
1020 |
+
/**
|
1021 |
+
* this function is run when wysija gets activated
|
1022 |
+
* there is no installation process here, all is about checking the global status of the app
|
1023 |
+
*/
|
1024 |
+
public static function activate(){
|
1025 |
+
$encoded_option=get_option('wysija');
|
1026 |
+
$installApp=false;
|
1027 |
+
if($encoded_option){
|
1028 |
+
$values=unserialize(base64_decode($encoded_option));
|
1029 |
+
if(isset($values['installed'])) $installApp=true;
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
//test again for plugins on reactivation
|
1033 |
+
if($installApp){
|
1034 |
+
$helper_import=WYSIJA::get('plugins_import','helper');
|
1035 |
+
$helper_import->testPlugins();
|
1036 |
+
|
1037 |
+
//resynch wordpress list
|
1038 |
+
$helper_user=WYSIJA::get('user','helper');
|
1039 |
+
$helper_user->synchList($values['importwp_list_id']);
|
1040 |
+
}
|
1041 |
+
}
|
1042 |
+
|
1043 |
+
/**
|
1044 |
+
* the is_plugin_active functions from WordPress sometimes are not loaded so here is one that works for single and multisites anywhere in the code
|
1045 |
+
* @param type $pluginName
|
1046 |
+
* @return type
|
1047 |
+
*/
|
1048 |
+
public static function is_plugin_active($pluginName){
|
1049 |
+
$arrayactiveplugins=get_option('active_plugins');
|
1050 |
+
//we check in the list of the site options if the plugin is activated
|
1051 |
+
if(in_array($pluginName, $arrayactiveplugins)) {
|
1052 |
+
//plugin is activated for that site
|
1053 |
+
return true;
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
//if this is a multisite it might not be activated in the site option but network activated though
|
1057 |
+
if(is_multisite()){
|
1058 |
+
$plugins = get_site_option('active_sitewide_plugins');
|
1059 |
+
//plugin is activated for that multisite
|
1060 |
+
if(isset($plugins[$pluginName])){
|
1061 |
+
return true;
|
1062 |
+
}
|
1063 |
+
}
|
1064 |
+
return false;
|
1065 |
+
}
|
1066 |
+
|
1067 |
+
/**
|
1068 |
+
* make sure that the current user has the good access rights corresponding to its role
|
1069 |
+
* @global type $current_user
|
1070 |
+
* @return type
|
1071 |
+
*/
|
1072 |
+
public static function update_user_caps(){
|
1073 |
+
global $current_user;
|
1074 |
+
|
1075 |
+
if(empty($current_user) && function_exists('get_currentuserinfo')) get_currentuserinfo();
|
1076 |
+
if(empty($current_user)) return false;
|
1077 |
+
$current_user->get_role_caps();
|
1078 |
+
|
1079 |
+
return true;
|
1080 |
+
}
|
1081 |
+
|
1082 |
+
/**
|
1083 |
+
* test whether the plugin is a beta version or not
|
1084 |
+
* 2.4.4.4 is a beta
|
1085 |
+
* 2.4.4 is a bug fix release
|
1086 |
+
* 2.4 is a feature release
|
1087 |
+
* @param string $plugin_name
|
1088 |
+
*/
|
1089 |
+
public static function is_beta($plugin_name=false){
|
1090 |
+
// exceptions
|
1091 |
+
$not_beta_versions = array('2.5.9.1', '2.5.9.2', '2.5.9.3', "2.5.9.4");
|
1092 |
+
$mailpoet_version = WYSIJA::get_version($plugin_name);
|
1093 |
+
if(in_array($mailpoet_version, $not_beta_versions)) return false;
|
1094 |
+
|
1095 |
+
// standard way of defining a beta version
|
1096 |
+
if(count(explode('.', $mailpoet_version)) > 3 ) return true;
|
1097 |
+
return false;
|
1098 |
+
}
|
1099 |
+
|
1100 |
+
/**
|
1101 |
+
* depending where it's used the base function from WordPress doesn't work, so this one will work anywhere
|
1102 |
+
* @param type $capability
|
1103 |
+
* @return type
|
1104 |
+
*/
|
1105 |
+
public static function current_user_can($capability){
|
1106 |
+
if(!$capability) return false;
|
1107 |
+
WYSIJA::update_user_caps();
|
1108 |
+
if(!current_user_can($capability)) return false;
|
1109 |
+
return true;
|
1110 |
+
}
|
1111 |
+
|
1112 |
+
/**
|
1113 |
+
* this function get and sets the cron schedules when MailPoet's own cron system is active
|
1114 |
+
* @staticvar type $cron_schedules
|
1115 |
+
* @param type $schedule
|
1116 |
+
* @return type
|
1117 |
+
*/
|
1118 |
+
public static function get_cron_schedule($schedule='queue'){
|
1119 |
+
static $cron_schedules;
|
1120 |
+
|
1121 |
+
//if the cron schedules are already loaded statically then we just have to return the right schedule value
|
1122 |
+
if(!empty($cron_schedules)){
|
1123 |
+
if($schedule=='all') return $cron_schedules;
|
1124 |
+
if(isset($cron_schedules[$schedule])) {
|
1125 |
+
return $cron_schedules[$schedule];
|
1126 |
+
}else{
|
1127 |
+
WYSIJA::set_cron_schedule($schedule);
|
1128 |
+
return false;
|
1129 |
+
}
|
1130 |
+
}else{
|
1131 |
+
//this is the first time this function is executed so let's get them from the db and store them statically
|
1132 |
+
$cron_schedules=get_option('wysija_schedules',array());
|
1133 |
+
if(!empty($cron_schedules)){
|
1134 |
+
if(isset($cron_schedules[$schedule])) return $cron_schedules[$schedule];
|
1135 |
+
else return false;
|
1136 |
+
}else{
|
1137 |
+
WYSIJA::set_cron_schedule();
|
1138 |
+
return false;
|
1139 |
+
}
|
1140 |
+
}
|
1141 |
+
return false;
|
1142 |
+
}
|
1143 |
+
|
1144 |
+
/**
|
1145 |
+
* return the frequency for each cron task needed by MailPoet
|
1146 |
+
* @return type an array of frequencies
|
1147 |
+
*/
|
1148 |
+
public static function get_cron_frequencies(){
|
1149 |
+
$model_config = WYSIJA::get('config','model');
|
1150 |
+
$helper_forms = WYSIJA::get('forms','helper');
|
1151 |
+
|
1152 |
+
if(is_multisite() && $model_config->getValue('sending_method')=='network'){
|
1153 |
+
$sending_emails_each = $model_config->getValue('ms_sending_emails_each');
|
1154 |
+
}else{
|
1155 |
+
$sending_emails_each = $model_config->getValue('sending_emails_each');
|
1156 |
+
}
|
1157 |
+
|
1158 |
+
$queue_frequency = $helper_forms->eachValuesSec[$sending_emails_each];
|
1159 |
+
$bounce_frequency = 99999999999999;
|
1160 |
+
if(isset($helper_forms->eachValuesSec[$model_config->getValue('bouncing_emails_each')])){
|
1161 |
+
$bounce_frequency = $helper_forms->eachValuesSec[$model_config->getValue('bouncing_emails_each')];
|
1162 |
+
}
|
1163 |
+
return array('queue'=>$queue_frequency,'bounce'=>$bounce_frequency,'daily'=>86400,'weekly'=>604800,'monthly'=>2419200);
|
1164 |
+
}
|
1165 |
+
|
1166 |
+
/**
|
1167 |
+
* set the next cron schedule
|
1168 |
+
* TODO : needs probably to make the difference of running process for the next schedule, so that there is no delay(this is only problematic on some slow servers)
|
1169 |
+
* @param string $schedule
|
1170 |
+
* @param int $last_saved
|
1171 |
+
* @param boolean $set_running
|
1172 |
+
* @return boolean
|
1173 |
+
*/
|
1174 |
+
public static function set_cron_schedule($schedule = false , $last_saved = 0 , $set_running = false){
|
1175 |
+
$cron_schedules = array();
|
1176 |
+
|
1177 |
+
$start_time = $last_saved;
|
1178 |
+
if(!$start_time) $start_time = time();
|
1179 |
+
$processes = WYSIJA::get_cron_frequencies();
|
1180 |
+
if(!$schedule){
|
1181 |
+
foreach($processes as $process => $frequency){
|
1182 |
+
$next_schedule = $start_time + $frequency;
|
1183 |
+
$prev_schedule = 0;
|
1184 |
+
if(isset($cron_schedules[$process]['running']) && $cron_schedules[$process]['running']) $prev_schedule=$cron_schedules[$process]['running'];
|
1185 |
+
$cron_schedules[$process]=array(
|
1186 |
+
'next_schedule' => $next_schedule,
|
1187 |
+
'prev_schedule' => $prev_schedule,
|
1188 |
+
'running' => false);
|
1189 |
+
}
|
1190 |
+
}else{
|
1191 |
+
$cron_schedules = WYSIJA::get_cron_schedule('all');
|
1192 |
+
if($set_running){
|
1193 |
+
$cron_schedules[$schedule]['running'] = $set_running;
|
1194 |
+
}else{
|
1195 |
+
$running = 0;
|
1196 |
+
if(isset($cron_schedules[$schedule]['running'])) $running = $cron_schedules[$schedule]['running'];
|
1197 |
+
// if the process is not running or has been running for more than 15 minutes then we set the next_schedule date
|
1198 |
+
$process_frequency = $processes[$schedule];
|
1199 |
+
|
1200 |
+
if(!$running || ( time() > ($running + $process_frequency) ) ){
|
1201 |
+
|
1202 |
+
$next_schedule = $start_time + $process_frequency;
|
1203 |
+
// if the next schedule is already behind, we give it 30 seconds before it can triggers again
|
1204 |
+
if( $next_schedule < $start_time ){
|
1205 |
+
$next_schedule = $start_time + 30;
|
1206 |
+
}
|
1207 |
+
|
1208 |
+
$cron_schedules[$schedule] = array(
|
1209 |
+
'next_schedule' => $next_schedule,
|
1210 |
+
'prev_schedule' => $running,
|
1211 |
+
'running' => false);
|
1212 |
+
}
|
1213 |
+
}
|
1214 |
+
}
|
1215 |
+
WYSIJA::update_option( 'wysija_schedules' , $cron_schedules , 'yes' );
|
1216 |
+
return true;
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
/**
|
1220 |
+
* check that there is no passed schedules that need to be executed now
|
1221 |
+
* @return void
|
1222 |
+
*/
|
1223 |
+
public static function cron_check() {
|
1224 |
+
|
1225 |
+
$cron_schedules = WYSIJA::get_cron_schedule('all');
|
1226 |
+
if(empty($cron_schedules)) return;
|
1227 |
+
else{
|
1228 |
+
$processes = WYSIJA::get_cron_frequencies();
|
1229 |
+
|
1230 |
+
$updated_sched = false;
|
1231 |
+
foreach($cron_schedules as $schedule => &$params){
|
1232 |
+
$running = 0;
|
1233 |
+
$time_now = time();
|
1234 |
+
if(isset($params['running'])) $running = $params['running'];
|
1235 |
+
//if the process has timedout we reschedule the next execution
|
1236 |
+
if($running && ( $time_now> ($running + $processes[$schedule]) ) ){
|
1237 |
+
//WYSIJA::setInfo('error','modifying next schedule for '.$proc);
|
1238 |
+
$process_frequency = $processes[$schedule];
|
1239 |
+
|
1240 |
+
$next_schedule = $running + $process_frequency;
|
1241 |
+
// if the next schedule is already behind, we give it 30 seconds before it can trigger again
|
1242 |
+
if( $next_schedule < $time_now ){
|
1243 |
+
$next_schedule = $time_now + 30;
|
1244 |
+
}
|
1245 |
+
$params=array(
|
1246 |
+
'next_schedule' => $next_schedule,
|
1247 |
+
'prev_schedule' => $running,
|
1248 |
+
'running' => false);
|
1249 |
+
$updated_sched=true;
|
1250 |
+
}
|
1251 |
+
}
|
1252 |
+
if($updated_sched){
|
1253 |
+
//WYSIJA::setInfo('error','updating scheds');
|
1254 |
+
WYSIJA::update_option( 'wysija_schedules' , $cron_schedules , 'yes' );
|
1255 |
+
}
|
1256 |
+
|
1257 |
+
}
|
1258 |
+
|
1259 |
+
$time_now = time();
|
1260 |
+
$processesToRun = array();
|
1261 |
+
foreach($cron_schedules as $schedule => $scheduled_times){
|
1262 |
+
if(strpos($schedule, '(bounce handling not activated)')!==false) continue;
|
1263 |
+
$process_frequency = $processes[$schedule];
|
1264 |
+
if( ( !$scheduled_times['running'] || (int)$scheduled_times['running'] + $process_frequency < $time_now ) && $scheduled_times['next_schedule'] < $time_now){
|
1265 |
+
$processesToRun[] = $schedule;
|
1266 |
+
}
|
1267 |
+
}
|
1268 |
+
|
1269 |
+
$model_config = WYSIJA::get('config','model');
|
1270 |
+
$page_view_trigger = (int)$model_config->getValue('cron_page_hit_trigger');
|
1271 |
+
if(!empty($processesToRun) && $page_view_trigger === 1){
|
1272 |
+
//call the cron url
|
1273 |
+
// do not call that more than once per 5 minutes attempt at reducing the CPU load for some users
|
1274 |
+
// http://wordpress.org/support/topic/wysija-newsletters-slowing-down-my-site-1
|
1275 |
+
$last_cron_time_plus_5min = (int)get_option('wysija_last_php_cron_call') + (5*60);
|
1276 |
+
|
1277 |
+
if($last_cron_time_plus_5min < time()){
|
1278 |
+
$cron_url = site_url( 'wp-cron.php').'?'.WYSIJA_CRON.'&action=wysija_cron&process='.implode(',',$processesToRun).'&silent=1';
|
1279 |
+
$cron_request = apply_filters( 'cron_request', array(
|
1280 |
+
'url' => $cron_url,
|
1281 |
+
'args' => array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) )
|
1282 |
+
) );
|
1283 |
+
|
1284 |
+
wp_remote_post( $cron_url, $cron_request['args'] );
|
1285 |
+
WYSIJA::update_option('wysija_last_php_cron_call', time());
|
1286 |
+
}
|
1287 |
+
|
1288 |
+
|
1289 |
+
}
|
1290 |
+
}
|
1291 |
+
|
1292 |
+
/**
|
1293 |
+
* Function somehow necessary to avoid some conflicts in windows server and WordPress autoload of plugins language file
|
1294 |
+
* @param type $boolean
|
1295 |
+
* @param type $domain
|
1296 |
+
* @param type $mofile
|
1297 |
+
* @return boolean
|
1298 |
+
*/
|
1299 |
+
public static function override_load_textdomain($boolean, $domain, $mofile){
|
1300 |
+
$extensionloaded=WYSIJA::load_lang('get_all');
|
1301 |
+
|
1302 |
+
if(isset($extensionloaded[$domain]) && !@file_exists($mofile)){
|
1303 |
+
return true;
|
1304 |
+
}
|
1305 |
+
|
1306 |
+
return false;
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
/**
|
1310 |
+
* function to rewrite the path of the file if the file doesn't exist
|
1311 |
+
* @param type $mofile
|
1312 |
+
* @param type $domain
|
1313 |
+
* @return type
|
1314 |
+
*/
|
1315 |
+
public static function load_textdomain_mofile($mofile, $domain){
|
1316 |
+
$extensionloaded=WYSIJA::load_lang('get_all');
|
1317 |
+
|
1318 |
+
if(isset($extensionloaded[$domain]) && !file_exists($mofile)){
|
1319 |
+
return WYSIJA_PLG_DIR.$domain.DS.'languages'.DS.$extensionloaded[$domain].'-'.get_locale().'.mo';
|
1320 |
+
}
|
1321 |
+
return $mofile;
|
1322 |
+
}
|
1323 |
+
}
|
1324 |
+
|
1325 |
+
// subscribers/wp-user synch hooks
|
1326 |
+
add_action('user_register', array('WYSIJA', 'hook_add_WP_subscriber'), 1);
|
1327 |
+
add_action('added_existing_user', array('WYSIJA', 'hook_add_WP_subscriber'), 1);
|
1328 |
+
add_action('profile_update', array('WYSIJA', 'hook_edit_WP_subscriber'), 1);
|
1329 |
+
// for standard blog
|
1330 |
+
add_action('delete_user', array('WYSIJA', 'hook_del_WP_subscriber'), 1);
|
1331 |
+
// for multisite
|
1332 |
+
add_action('deleted_user', array('WYSIJA', 'hook_del_WP_subscriber'), 1);
|
1333 |
+
add_action('remove_user_from_blog', array('WYSIJA', 'hook_del_WP_subscriber'), 1);
|
1334 |
+
|
1335 |
+
// Load the Upgrader Class
|
1336 |
+
add_action('init', array('WJ_Upgrade', 'hook'), 9);
|
1337 |
+
|
1338 |
+
// post notif trigger
|
1339 |
+
add_action('transition_post_status', array('WYSIJA', 'hook_postNotification_transition'), 1, 3);
|
1340 |
+
// refresh auto newsletter content when a post is modified
|
1341 |
+
//add_action('save_post', array('WYSIJA', 'hook_auto_newsletter_refresh'), 1, 1);
|
1342 |
+
add_action('delete_post', array('WYSIJA', 'hook_auto_newsletter_refresh'), 1, 1);
|
1343 |
+
|
1344 |
+
// add image size for emails
|
1345 |
+
add_image_size('wysija-newsletters-max', 600, 99999);
|
1346 |
+
|
1347 |
+
$modelConf=WYSIJA::get('config','model');
|
1348 |
+
if($modelConf->getValue('installed_time')){
|
1349 |
+
|
1350 |
+
// START all that concerns the CRON
|
1351 |
+
// make sure we check when is the schedule due with wysija's cron
|
1352 |
+
if($modelConf->getValue('cron_manual')){
|
1353 |
+
// if WP cron tasks are still set, we clear them
|
1354 |
+
if(wp_get_schedule('wysija_cron_queue')) WYSIJA::deactivate();
|
1355 |
+
|
1356 |
+
// set the crons schedule for each process
|
1357 |
+
WYSIJA::get_cron_schedule();
|
1358 |
+
|
1359 |
+
// check that there is no late cron schedules if we are using wysija's cron option and that the cron option is triggerred by any page view
|
1360 |
+
if(!isset($_REQUEST['process'])){
|
1361 |
+
WYSIJA::cron_check();
|
1362 |
+
}
|
1363 |
+
|
1364 |
+
// this action is triggerred only by a cron job
|
1365 |
+
// if we're entering the wysija's cron part, it should end here
|
1366 |
+
if(isset($_REQUEST['action']) && $_REQUEST['action']=='wysija_cron'){
|
1367 |
+
// priority is hundred so that the messages such as unsubscribe or view in your browser have time to be translated(they get translated around 96, 97)
|
1368 |
+
add_action('init', 'init_wysija_cron',100);
|
1369 |
+
|
1370 |
+
function init_wysija_cron(){
|
1371 |
+
$hCron=WYSIJA::get('cron','helper');
|
1372 |
+
$hCron->run();
|
1373 |
+
}
|
1374 |
+
}
|
1375 |
+
|
1376 |
+
// make sure the scheduled tasks are recorded when using WordPress' cron
|
1377 |
+
}else{
|
1378 |
+
|
1379 |
+
// filter to add new possible frequencies to the cron
|
1380 |
+
add_filter( 'cron_schedules', array( 'WYSIJA', 'filter_cron_schedules' ) );
|
1381 |
+
|
1382 |
+
// action to handle the scheduled tasks in wysija
|
1383 |
+
add_action( 'wysija_cron_queue', array( 'WYSIJA', 'croned_queue' ) );
|
1384 |
+
add_action( 'wysija_cron_daily', array( 'WYSIJA', 'croned_daily' ) );
|
1385 |
+
add_action( 'wysija_cron_weekly', array( 'WYSIJA', 'croned_weekly' ) );
|
1386 |
+
add_action( 'wysija_cron_monthly', array( 'WYSIJA', 'croned_monthly' ) );
|
1387 |
+
|
1388 |
+
// same with the weekly task
|
1389 |
+
if(!wp_next_scheduled('wysija_cron_weekly')){
|
1390 |
+
wp_schedule_event( $modelConf->getValue('last_save') , 'eachweek', 'wysija_cron_weekly' );
|
1391 |
+
}
|
1392 |
+
// the monthly task...
|
1393 |
+
if(!wp_next_scheduled('wysija_cron_monthly')){
|
1394 |
+
wp_schedule_event( $modelConf->getValue('last_save') , 'each28days', 'wysija_cron_monthly' );
|
1395 |
+
}
|
1396 |
+
|
1397 |
+
// the daily task...
|
1398 |
+
if(!wp_next_scheduled('wysija_cron_daily')){
|
1399 |
+
wp_schedule_event( $modelConf->getValue('last_save') , 'daily', 'wysija_cron_daily' );
|
1400 |
+
}
|
1401 |
+
|
1402 |
+
|
1403 |
+
if(is_multisite()){
|
1404 |
+
|
1405 |
+
// in the case of multisite and the network's method we schedule with a different frequency
|
1406 |
+
// this option contains the list of sites already scheduled
|
1407 |
+
$ms_wysija_bounce_cron = get_site_option('ms_wysija_bounce_cron');
|
1408 |
+
global $blog_id;
|
1409 |
+
|
1410 |
+
// if this blog is not recorded in our wysija_sending_cron option then we clear its scheduled so that we can reinitialize it
|
1411 |
+
if(!$ms_wysija_bounce_cron || !isset($ms_wysija_bounce_cron[$blog_id])){
|
1412 |
+
wp_clear_scheduled_hook('wysija_cron_bounce');
|
1413 |
+
WYSIJA::set_cron_schedule('queue');
|
1414 |
+
$ms_wysija_bounce_cron[$blog_id] = 1;
|
1415 |
+
update_site_option('ms_wysija_bounce_cron',$ms_wysija_bounce_cron);
|
1416 |
+
}
|
1417 |
+
|
1418 |
+
}
|
1419 |
+
|
1420 |
+
// if the bounce task is not scheduled then we initialize it
|
1421 |
+
if(!wp_next_scheduled('wysija_cron_bounce')){
|
1422 |
+
wp_schedule_event( $modelConf->getValue('last_save') , $modelConf->getValue('bouncing_emails_each'), 'wysija_cron_bounce' );
|
1423 |
+
}
|
1424 |
+
|
1425 |
+
// and the queue processing task ...
|
1426 |
+
// if we are in a multisite case we make sure that the ms frequency hasn't been changed, if it has we reset it
|
1427 |
+
if(is_multisite() && $modelConf->getValue('sending_method')=='network'){
|
1428 |
+
// in the case of multisite and the network's method we schedule with a different frequency
|
1429 |
+
// this option contains the list of sites already scheduled
|
1430 |
+
$ms_wysija_sending_cron=get_site_option('ms_wysija_sending_cron');
|
1431 |
+
global $blog_id;
|
1432 |
+
|
1433 |
+
// if this blog is not recorded in our wysija_sending_cron option then we clear its scheduled so that we can reinitialize it
|
1434 |
+
if(!$ms_wysija_sending_cron || !isset($ms_wysija_sending_cron[$blog_id])){
|
1435 |
+
wp_clear_scheduled_hook('wysija_cron_queue');
|
1436 |
+
WYSIJA::set_cron_schedule('queue');
|
1437 |
+
$ms_wysija_sending_cron[$blog_id]=1;
|
1438 |
+
update_site_option('ms_wysija_sending_cron',$ms_wysija_sending_cron);
|
1439 |
+
}
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
|
1443 |
+
// simply schedule the queue
|
1444 |
+
if(!wp_next_scheduled('wysija_cron_queue')){
|
1445 |
+
|
1446 |
+
// in the case of multisite and the network's method we schedule with a different frequency
|
1447 |
+
if(is_multisite() && $modelConf->getValue('sending_method')=='network'){
|
1448 |
+
$sending_emails_each=$modelConf->getValue('ms_sending_emails_each');
|
1449 |
+
}else{
|
1450 |
+
$sending_emails_each=$modelConf->getValue('sending_emails_each');
|
1451 |
+
}
|
1452 |
+
wp_schedule_event( $modelConf->getValue('last_save') , $sending_emails_each, 'wysija_cron_queue' );
|
1453 |
+
}
|
1454 |
+
|
1455 |
+
}// END all that concerns the CRON
|
1456 |
+
|
1457 |
+
// filter fixing a bug with automatic load_text_domain_from WP didn't understand yet why this was necessary...
|
1458 |
+
// somehow wp_register_script(which is irrelevant) was triggerring this kind of notice
|
1459 |
+
// Warning: is_readable() [function.is-readable]: open_basedir restriction in effect. File(C:\Domains\website.com\wwwroot\web/wp-content/plugins/C:\Domains\website.com\wwwroot\web\wp-content\plugins\wysija-newsletters/languages/wysija-newsletters-en_US.mo) is not within the allowed path(s): (.;C:\Domains\;C:\PHP\;C:\Sites\;C:\SitesData\;/) in C:\Domains\website.com\wwwroot\web\wp-includes\l10n.php on line 339
|
1460 |
+
// the only solution is to make sure on our end that the file exists and rewrite it if necessary
|
1461 |
+
add_filter( 'override_load_textdomain', array( 'WYSIJA', 'override_load_textdomain' ), 10, 3);
|
1462 |
+
add_filter('load_textdomain_mofile', array( 'WYSIJA', 'load_textdomain_mofile' ), 10, 2);
|
1463 |
+
}
|
1464 |
+
|
1465 |
+
// not yet used but the purpose is to override any notification sent through wp_mail
|
1466 |
+
if($modelConf->getValue('wp_notifications')){
|
1467 |
+
$hWPnotif=WYSIJA::get('wp_notifications','helper');
|
1468 |
+
}
|
1469 |
+
|
1470 |
+
register_deactivation_hook(WYSIJA_FILE, array( 'WYSIJA', 'deactivate' ));
|
1471 |
+
register_activation_hook(WYSIJA_FILE, array( 'WYSIJA', 'activate' ));
|
1472 |
+
add_action( 'init', array('WYSIJA','create_post_type') );
|
1473 |
+
|
1474 |
+
|
1475 |
+
// launch application
|
1476 |
+
$helper = WYSIJA::get(WYSIJA_SIDE,'helper');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core/model.php
CHANGED
@@ -2,1033 +2,1037 @@
|
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_model extends WYSIJA_object{
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
|
|
|
|
|
|
|
|
1033 |
|
1034 |
}
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_model extends WYSIJA_object{
|
4 |
|
5 |
+
var $table_prefix='wysija';
|
6 |
+
var $table_name='';
|
7 |
+
var $pk='';
|
8 |
+
var $values=array();
|
9 |
+
var $conditions=array();
|
10 |
+
var $orderby=array();
|
11 |
+
var $groupby=false;
|
12 |
+
var $noCheck =false;
|
13 |
+
var $replaceQRY=false;
|
14 |
+
var $limitON=false;
|
15 |
+
var $dbg=false;
|
16 |
+
var $colCheck=true;
|
17 |
+
var $getFormat=ARRAY_A;
|
18 |
+
var $getOne=false;
|
19 |
+
var $fieldValid=true;
|
20 |
+
var $specialUpdate=false;
|
21 |
+
var $escapeFields=array();
|
22 |
+
var $escapingOn=false;
|
23 |
+
var $tableWP=false;
|
24 |
+
var $columns=array();
|
25 |
+
var $joins=array();
|
26 |
+
var $ignore = false;
|
27 |
+
var $sql_error=false;
|
28 |
+
var $comparisonKeys = array('equal', 'notequal', 'like', 'greater', 'less', 'greater_eq', 'less_eq', 'is');
|
29 |
+
var $time_start = 0;
|
30 |
+
var $query_duration = 0;
|
31 |
+
|
32 |
+
function WYSIJA_model($extensions=''){
|
33 |
+
if(defined('WYSIJA_DBG') && WYSIJA_DBG>0) $this->dbg=true;
|
34 |
+
global $wpdb;
|
35 |
+
$this->wpprefix=$wpdb->prefix;
|
36 |
+
if($extensions) $this->table_prefix=$extensions;
|
37 |
+
//fix for radiokapi
|
38 |
+
//$this->wpprefix=$wpdb->base_prefix;
|
39 |
+
}
|
40 |
+
/**
|
41 |
+
* since we reuse the same objects accross the whole application
|
42 |
+
* once in a while for instance between a delete and a select we need to reset the objects to update the conditions
|
43 |
+
*/
|
44 |
+
function reset(){
|
45 |
+
$this->values=array();
|
46 |
+
$this->conditions=array();
|
47 |
+
$this->orderby=array();
|
48 |
+
$this->groupby=false;
|
49 |
+
$this->getFormat=ARRAY_A;
|
50 |
+
$this->getOne=false;
|
51 |
+
$this->limitON=false;
|
52 |
+
$this->sql_error=false;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
*
|
57 |
+
* @param type $columnsOrPKval
|
58 |
+
* @param type $conditions
|
59 |
+
* @return type
|
60 |
+
*/
|
61 |
+
function get($columnsOrPKval=false,$conditions=array()){
|
62 |
+
/*then columns becomes the pk value*/
|
63 |
+
if(!$conditions){
|
64 |
+
$conditions=array('equal'=>array($this->pk=>$columnsOrPKval));
|
65 |
+
$columnsOrPKval=false;
|
66 |
+
$this->noCheck=true;
|
67 |
+
}
|
68 |
+
|
69 |
+
/* if we pass just the id strong in the get conditions then it's the pk*/
|
70 |
+
if($conditions && !is_array($conditions)){
|
71 |
+
$conditions=array('equal'=>array($this->pk=>$conditions));
|
72 |
+
}
|
73 |
+
if($this->setConditions($conditions)){
|
74 |
+
if($this->getOne) $results=$this->getRows($columnsOrPKval,0,1);
|
75 |
+
else $results=$this->getRows($columnsOrPKval);
|
76 |
+
//$this->escapeQuotesFromRes($results);
|
77 |
+
if($this->getOne && count($results)==1){
|
78 |
+
switch($this->getFormat){
|
79 |
+
case ARRAY_A:
|
80 |
+
foreach($results as $res)return $res;
|
81 |
+
break;
|
82 |
+
case OBJECT:
|
83 |
+
foreach($results as $res)return $res;
|
84 |
+
break;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
else return $results;
|
88 |
+
}
|
89 |
+
|
90 |
+
return false;
|
91 |
+
}
|
92 |
+
|
93 |
+
function getOne($columnsOrPKval=false,$conditions=array()){
|
94 |
+
$this->getOne=true;
|
95 |
+
$this->limitON=true;
|
96 |
+
|
97 |
+
return $this->get($columnsOrPKval,$conditions);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* get a list of result based on a select query
|
102 |
+
* @global type $wpdb
|
103 |
+
* @param type $columns
|
104 |
+
* @param type $page
|
105 |
+
* @param type $limit
|
106 |
+
* @return type
|
107 |
+
*/
|
108 |
+
function getRows($columns=false,$page=0,$limit=false){
|
109 |
+
|
110 |
+
/*set the columns*/
|
111 |
+
if($columns){
|
112 |
+
if(is_array($columns)){
|
113 |
+
$columns=implode(', ',$columns);
|
114 |
+
}
|
115 |
+
}else $columns='*';
|
116 |
+
|
117 |
+
|
118 |
+
$query='SELECT '.$columns.' FROM `'.$this->getSelectTableName()."`";
|
119 |
+
$query.=$this->makeJoins();
|
120 |
+
$query.=$this->makeWhere();
|
121 |
+
$query.=$this->makeGroupBY();
|
122 |
+
$query.=$this->makeOrderBY();
|
123 |
+
|
124 |
+
if($this->limitON) $query.=$this->setLimit($page,$limit);
|
125 |
+
$results=$this->query('get_res',$query,$this->getFormat);
|
126 |
+
|
127 |
+
//$this->escapeQuotesFromRes($results);
|
128 |
+
|
129 |
+
return $results;
|
130 |
+
}
|
131 |
+
|
132 |
+
function escapeQuotesFromRes(&$results){
|
133 |
+
if(!$this->escapingOn) return false;
|
134 |
+
foreach($results as $k =>$r){
|
135 |
+
|
136 |
+
if(in_array($this->getFormat,array(ARRAY_A,ARRAY_N))){
|
137 |
+
foreach($r as $k1 =>$v1){
|
138 |
+
if(in_array($k1,$this->escapeFields)){
|
139 |
+
$results[$k][$k1]= stripslashes($v1);
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
function setLimit($page=0,$limit=false){
|
147 |
+
/*set the limit of the selection*/
|
148 |
+
|
149 |
+
if(!$this->getOne){
|
150 |
+
if($page==0){
|
151 |
+
if(isset($_REQUEST['pagi'])){
|
152 |
+
$page=(int)$_REQUEST['pagi'];
|
153 |
+
if($page!=0) $page=$page-1;
|
154 |
+
}
|
155 |
+
|
156 |
+
}else $page=$page-1;
|
157 |
+
}
|
158 |
+
|
159 |
+
if(!$limit){
|
160 |
+
if(isset($this->limit_pp)) $limit=$this->limit_pp;
|
161 |
+
else{
|
162 |
+
$config=WYSIJA::get('config','model');
|
163 |
+
$limit=$config->getValue('limit_listing');
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
$this->limit=(int)$limit;
|
168 |
+
$this->page=$page;
|
169 |
+
$this->limit_start=(int)($this->page*$this->limit);
|
170 |
+
$this->limit_end=(int)($this->limit_start+$this->limit);
|
171 |
+
|
172 |
+
return " LIMIT $this->limit_start , $this->limit";
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* DEPRECATED
|
177 |
+
* to have a custom query through the model and get the result immediately
|
178 |
+
* @param type $query
|
179 |
+
* @return type
|
180 |
+
*/
|
181 |
+
function getResults($query,$type=ARRAY_A){
|
182 |
+
return $this->query('get_res',$query, $type);
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* to have a custom query through the model and get the result immediately
|
187 |
+
* @param type $query
|
188 |
+
* @return type
|
189 |
+
*/
|
190 |
+
public function get_results($query,$type=ARRAY_A){
|
191 |
+
return $this->getResults($query,$type);
|
192 |
+
}
|
193 |
+
|
194 |
+
|
195 |
+
function getSelectTableName(){
|
196 |
+
if($this->joins && isset($this->joins['tablestart'])){
|
197 |
+
if(isset($this->joins['prefstart'])) return $this->wpprefix.$this->joins['prefstart'].'_'.$this->joins['tablestart'];
|
198 |
+
else return $this->getPrefix().$this->joins['tablestart'];
|
199 |
+
}else return $this->getPrefix().$this->table_name;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* simple SQL count
|
204 |
+
* @global type $wpdb
|
205 |
+
* @return type
|
206 |
+
*/
|
207 |
+
function count($query=false,$keygetcount=false){
|
208 |
+
if(!$query){
|
209 |
+
$groupBy=$this->makeGroupBY();
|
210 |
+
$columnMore='';
|
211 |
+
if($groupBy) $columnMore=','.$this->groupby;
|
212 |
+
$query='SELECT COUNT('.$this->getPk().') as count '.$columnMore.' FROM `'.$this->getSelectTableName().'`';
|
213 |
+
$query.=$this->makeJoins();
|
214 |
+
|
215 |
+
$query.=$this->makeWhere();
|
216 |
+
$query.=$groupBy;
|
217 |
+
}
|
218 |
+
|
219 |
+
|
220 |
+
// if dbg is on we track the duration of the query
|
221 |
+
if($this->dbg){
|
222 |
+
$this->timer_start();
|
223 |
+
}
|
224 |
+
$results=$this->query('get_res',$query,$this->getFormat);
|
225 |
+
|
226 |
+
// if dbg is on we track the duration of the query
|
227 |
+
if($this->dbg){
|
228 |
+
$this->timer_stop();
|
229 |
+
$this->keepQry('count');
|
230 |
+
}
|
231 |
+
|
232 |
+
if(!$results || count($results)>1) return $results;
|
233 |
+
else {
|
234 |
+
if($keygetcount) return $results[0][$keygetcount];
|
235 |
+
else{
|
236 |
+
foreach($results[0] as $key => $count) return $count;
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
|
241 |
+
return $results;
|
242 |
+
}
|
243 |
+
|
244 |
+
/**
|
245 |
+
* make the SQL WHERE condition string
|
246 |
+
* @return string
|
247 |
+
*/
|
248 |
+
function makeWhere(){
|
249 |
+
$query='';
|
250 |
+
if($this->conditions){
|
251 |
+
/*set the WHERE clause*/
|
252 |
+
$conditions=array();
|
253 |
+
foreach($this->conditions as $type=>$values){
|
254 |
+
if(!in_array($type, $this->comparisonKeys)){
|
255 |
+
$conditionsss=$this->conditions;
|
256 |
+
$this->conditions=array();
|
257 |
+
$this->conditions['equal']=$conditionsss;
|
258 |
+
|
259 |
+
break;
|
260 |
+
}
|
261 |
+
}
|
262 |
+
foreach($this->conditions as $type=>$values){
|
263 |
+
if($type=='like' && count($values)>1){
|
264 |
+
if(is_array($values)){
|
265 |
+
$total=count($values);
|
266 |
+
$i=1;
|
267 |
+
$likeCond='';
|
268 |
+
foreach($values as $qfield => $qval){
|
269 |
+
$likeCond.=$qfield." LIKE '%".mysql_real_escape_string(addcslashes($qval, '%_' ))."%'";
|
270 |
+
if($i<$total){
|
271 |
+
$likeCond.=' OR ';
|
272 |
+
}
|
273 |
+
$i++;
|
274 |
+
}
|
275 |
+
$conditions[]='('.$likeCond.')';
|
276 |
+
}
|
277 |
+
continue;
|
278 |
+
}
|
279 |
+
foreach($values as $condK => $condVal){
|
280 |
+
|
281 |
+
//secure from injections
|
282 |
+
$this->_secureFieldVal($condK, $condVal);
|
283 |
+
|
284 |
+
switch($type){
|
285 |
+
case 'equal':
|
286 |
+
if(is_array($condVal)){
|
287 |
+
$conditions[]=$condK.' IN ("'.implode('","', $condVal).'")';
|
288 |
+
}else{
|
289 |
+
if(is_null($condVal)) {
|
290 |
+
$conditions[] = $condK.' IS NULL';
|
291 |
+
} else {
|
292 |
+
if(is_numeric($condVal) === false) $condVal = '"'.$condVal.'"';
|
293 |
+
$conditions[] = $condK.'='.$condVal;
|
294 |
+
}
|
295 |
+
}
|
296 |
+
break;
|
297 |
+
case 'notequal':
|
298 |
+
if(is_array($condVal)){
|
299 |
+
$conditions[]=$condK.' NOT IN ("'.implode('","', $condVal).'")';
|
300 |
+
}else{
|
301 |
+
//this means that if I delete something with a list of ids and the array happens to be empty array of ids it will just delete everything by
|
302 |
+
if(is_null($condVal)) {
|
303 |
+
$conditions[] = $condK.' IS NOT NULL';
|
304 |
+
} else {
|
305 |
+
if(is_numeric($condVal) === false) $condVal = '"'.$condVal.'"';
|
306 |
+
$conditions[] = $condK.' != '.$condVal;
|
307 |
+
}
|
308 |
+
}
|
309 |
+
break;
|
310 |
+
case 'like':
|
311 |
+
$conditions[]=$condK." LIKE '%".mysql_real_escape_string(addcslashes($condVal, '%_' ))."%'";
|
312 |
+
break;
|
313 |
+
case 'greater':
|
314 |
+
if(is_numeric($condVal) === false) $condVal = '"'.$condVal.'"';
|
315 |
+
$conditions[]=$condK.' > '.$condVal;
|
316 |
+
break;
|
317 |
+
case 'less':
|
318 |
+
if(is_numeric($condVal) === false) $condVal = '"'.$condVal.'"';
|
319 |
+
$conditions[]=$condK.' < '.$condVal;
|
320 |
+
break;
|
321 |
+
case 'greater_eq':
|
322 |
+
if(is_numeric($condVal) === false) $condVal = '"'.$condVal.'"';
|
323 |
+
$conditions[]=$condK.' >= '.$condVal;
|
324 |
+
break;
|
325 |
+
case 'less_eq':
|
326 |
+
if(is_numeric($condVal) === false) $condVal = '"'.$condVal.'"';
|
327 |
+
$conditions[]=$condK.' <= '.$condVal;
|
328 |
+
break;
|
329 |
+
case 'is':
|
330 |
+
|
331 |
+
$conditions[]=$condK.' '.$condVal;
|
332 |
+
break;
|
333 |
+
}
|
334 |
+
}
|
335 |
+
|
336 |
+
}
|
337 |
+
|
338 |
+
$query.=' WHERE '.implode(' AND ',$conditions);
|
339 |
+
}
|
340 |
+
|
341 |
+
return $query;
|
342 |
+
}
|
343 |
+
|
344 |
+
/**
|
345 |
+
* make the SQL ORDER BY condition string
|
346 |
+
* @return string
|
347 |
+
*/
|
348 |
+
function makeOrderBY(){
|
349 |
+
$query=' ORDER BY ';
|
350 |
+
if($this->orderby){
|
351 |
+
/*set the ORDER BY clause*/
|
352 |
+
$query.=$this->orderby.' '.$this->orderbyt;
|
353 |
+
}else{
|
354 |
+
/*by default we order by pk desc*/
|
355 |
+
if(is_array($this->pk)) return '';
|
356 |
+
$query.=$this->pk.' DESC';
|
357 |
+
}
|
358 |
+
return $query;
|
359 |
+
}
|
360 |
+
|
361 |
+
|
362 |
+
function makeJoins(){
|
363 |
+
|
364 |
+
if($this->joins){
|
365 |
+
$join=' as A';
|
366 |
+
$arrayLetters=array('B','C','D','E');
|
367 |
+
foreach($this->joins['tablejoins'] as $table => $fk){
|
368 |
+
$letter=array_shift($arrayLetters);
|
369 |
+
$join.=' JOIN `'.$this->getPrefix().$table.'` AS '.$letter." on $letter.$fk=A.".$this->joins['keystart'].' ';
|
370 |
+
}
|
371 |
+
/*set the ORDER BY clause*/
|
372 |
+
return $join;
|
373 |
+
}else return '';
|
374 |
+
|
375 |
+
}
|
376 |
+
/**
|
377 |
+
* make the SQL ORDER BY condition string
|
378 |
+
* @return string
|
379 |
+
*/
|
380 |
+
function makeGroupBY(){
|
381 |
+
|
382 |
+
if($this->groupby){
|
383 |
+
/*set the ORDER BY clause*/
|
384 |
+
return ' GROUP BY '.$this->groupby;
|
385 |
+
}else return '';
|
386 |
+
|
387 |
+
}
|
388 |
+
function groupBy($name){
|
389 |
+
|
390 |
+
if (!is_string($name) OR preg_match('|[^a-z0-9#_.-]|i',$name) !== 0 ){
|
391 |
+
$this->groupby=false;
|
392 |
+
}else $this->groupby=$name;
|
393 |
+
}
|
394 |
+
function orderBy($name,$type = 'ASC'){
|
395 |
+
|
396 |
+
if(is_array($name) and count($name) > 0) {
|
397 |
+
// set order by to empty string
|
398 |
+
$this->orderby = '';
|
399 |
+
$this->ordert = '';
|
400 |
+
|
401 |
+
// count number of arguments
|
402 |
+
$count = count($name);
|
403 |
+
|
404 |
+
// build order by query
|
405 |
+
for($i = 0; $i < $count; $i++) {
|
406 |
+
|
407 |
+
$value = current($name);
|
408 |
+
|
409 |
+
//security escaping
|
410 |
+
if(!is_string(key($name)) OR preg_match('|[^a-z0-9#_.-]|i',key($name)) !== 0 ){
|
411 |
+
$orderByCol="";
|
412 |
+
}else $orderByCol=key($name);
|
413 |
+
//security escaping
|
414 |
+
if(!is_string($value) OR preg_match('|[^a-z0-9#_.-]|i',$value) !== 0 ){
|
415 |
+
$orderByVal="";
|
416 |
+
}else $orderByVal=$value;
|
417 |
+
|
418 |
+
if($i === ($count - 1)) {
|
419 |
+
$this->orderby .= $orderByCol;
|
420 |
+
$this->ordert = $orderByVal;
|
421 |
+
} else {
|
422 |
+
$this->orderby .=$orderByCol.' '.$orderByVal;
|
423 |
+
$this->orderby .= ', ';
|
424 |
+
next($name);
|
425 |
+
}
|
426 |
+
}
|
427 |
+
} else if(!is_string($name) OR preg_match('|[^a-z0-9#_.-]|i',$name) !== 0 ){
|
428 |
+
$this->orderby="";
|
429 |
+
}else {
|
430 |
+
$this->orderby=$name;
|
431 |
+
}
|
432 |
+
|
433 |
+
if(!in_array($type,array('DESC','ASC'))) $type = 'DESC';
|
434 |
+
$this->orderbyt=$type;
|
435 |
+
}
|
436 |
+
|
437 |
+
|
438 |
+
|
439 |
+
/**
|
440 |
+
* prepare for an insert procedure
|
441 |
+
* @param type $values
|
442 |
+
*/
|
443 |
+
function insert($values,$ignore=false){
|
444 |
+
if($ignore)$this->ignore=true;
|
445 |
+
if($this->setValues($values)){
|
446 |
+
return $this->save();
|
447 |
+
}else{
|
448 |
+
$this->error(sprintf('missing values in model insert : %1$s.', get_class($this)));
|
449 |
+
}
|
450 |
+
}
|
451 |
+
|
452 |
+
|
453 |
+
function replace($values=array()){
|
454 |
+
$this->replaceQRY=true;
|
455 |
+
$this->insert($values);
|
456 |
+
$this->replaceQRY=false;
|
457 |
+
}
|
458 |
+
|
459 |
+
/**
|
460 |
+
* prepare for an update procedure
|
461 |
+
* @param type $values
|
462 |
+
* @param type $conditions
|
463 |
+
*/
|
464 |
+
function update($values=array(),$conditions=array()){
|
465 |
+
|
466 |
+
if($this->setValues($values)){
|
467 |
+
/*if no condition is set then we set it mannualy based on the primary key*/
|
468 |
+
if(!$conditions){
|
469 |
+
if(!$this->conditions){
|
470 |
+
if(isset($values[$this->pk]) && $values[$this->pk]){
|
471 |
+
|
472 |
+
$this->setConditions(array($this->pk => $values[$this->pk]), true);
|
473 |
+
|
474 |
+
unset($values[$this->pk]);
|
475 |
+
|
476 |
+
return $this->save(true);
|
477 |
+
|
478 |
+
}else{
|
479 |
+
$this->error(sprintf('missing pk value in model update : %1$s.', get_class($this)));
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
}else{
|
484 |
+
if($this->setConditions($conditions,true)){
|
485 |
+
return $this->save(true);
|
486 |
+
}else{
|
487 |
+
$this->error(sprintf('missing conditions in model update : %1$s.', get_class($this)));
|
488 |
+
}
|
489 |
+
}
|
490 |
+
|
491 |
+
}else{
|
492 |
+
$this->error(sprintf('missing values in model update : %1$s.', get_class($this)));
|
493 |
+
}
|
494 |
+
}
|
495 |
+
|
496 |
+
/**
|
497 |
+
* UPDATE with a special where condition
|
498 |
+
* @param type $table
|
499 |
+
* @param type $data
|
500 |
+
* @param type $where
|
501 |
+
* @param type $format
|
502 |
+
* @param type $where_format
|
503 |
+
* @return type
|
504 |
+
*/
|
505 |
+
function specialUpdate( $table, $data, $where, $format = null, $where_format = null ) {
|
506 |
+
if ( ! is_array( $data ) || ! is_array( $where ) )
|
507 |
+
return false;
|
508 |
+
|
509 |
+
$formats = $format = (array) $format;
|
510 |
+
$bits = $wheres = array();
|
511 |
+
|
512 |
+
$i=0;
|
513 |
+
foreach ( $data as $field => $val) {
|
514 |
+
$this->_secureFieldVal($field,$val);
|
515 |
+
|
516 |
+
switch($format[$i]){
|
517 |
+
case "%d":
|
518 |
+
$bits[] = "`$field` = ".(int)$val;
|
519 |
+
break;
|
520 |
+
case '[increment]':
|
521 |
+
$bits[] = "`$field` = ".$field.'+1';
|
522 |
+
break;
|
523 |
+
case '[decrement]':
|
524 |
+
$bits[] = "`$field` = ".$field.'-1';
|
525 |
+
break;
|
526 |
+
default :
|
527 |
+
$bits[] = "`$field` = '".$val."'";
|
528 |
+
}
|
529 |
+
$i++;
|
530 |
+
}
|
531 |
+
|
532 |
+
$sql = "UPDATE `$table` SET " . implode( ', ', $bits ) . ' ' . $this->makeWhere();
|
533 |
+
return $this->query( $sql );
|
534 |
+
}
|
535 |
+
|
536 |
+
|
537 |
+
function _secureFieldVal(&$field,&$val){
|
538 |
+
if (!is_string($field) OR preg_match('|[^a-z0-9#_.-]|i',$field) !== 0 ){
|
539 |
+
die('field "'.$field .'" not secured');
|
540 |
+
}
|
541 |
+
global $wpdb;
|
542 |
+
if(is_string($val)) $val=mysql_real_escape_string($val,$wpdb->dbh);
|
543 |
+
else{
|
544 |
+
if(is_array($val)){
|
545 |
+
foreach($val as $k=>$v){
|
546 |
+
if(is_string($v)) $val[$k]=mysql_real_escape_string($v,$wpdb->dbh);
|
547 |
+
}
|
548 |
+
}elseif(is_object($val)){
|
549 |
+
foreach($val as $k=>$v){
|
550 |
+
if(is_string($v)) $val->$k=mysql_real_escape_string($v,$wpdb->dbh);
|
551 |
+
}
|
552 |
+
}
|
553 |
+
}
|
554 |
+
}
|
555 |
+
/**
|
556 |
+
* save information as an update or an insert
|
557 |
+
* @global type $wpdb
|
558 |
+
* @param type $update
|
559 |
+
* @return type
|
560 |
+
*/
|
561 |
+
function save($update=false){
|
562 |
+
|
563 |
+
if($update)$updateStr='Update';
|
564 |
+
else $updateStr='Insert';
|
565 |
+
$beforeSave='before'.$updateStr;
|
566 |
+
$afterSave='after'.$updateStr;
|
567 |
+
|
568 |
+
|
569 |
+
|
570 |
+
if(!$update && isset($this->columns['created_at']))$this->values['created_at']=time();
|
571 |
+
foreach($this->columns as $key => $params){
|
572 |
+
/*check for auto columns */
|
573 |
+
if((isset($params['autoup']) && $update) || (!$update && $key!='sent_at')){
|
574 |
+
if(isset($params['type']) && !isset($this->values[$key])){
|
575 |
+
switch($params['type']){
|
576 |
+
case 'date':
|
577 |
+
$this->values[$key]=time();
|
578 |
+
break;
|
579 |
+
case 'ip':
|
580 |
+
$userHelper=WYSIJA::get("user","helper");
|
581 |
+
/*record the ip and save the user*/
|
582 |
+
$this->values[$key]=$userHelper->getIP();
|
583 |
+
break;
|
584 |
+
case 'referer':
|
585 |
+
/*record the ip and save the user*/
|
586 |
+
$this->values[$key]=$_SERVER['HTTP_REFERER'];
|
587 |
+
break;
|
588 |
+
}
|
589 |
+
}
|
590 |
+
|
591 |
+
}
|
592 |
+
}
|
593 |
+
|
594 |
+
if(method_exists($this,$beforeSave)){
|
595 |
+
if(!$this->$beforeSave()){
|
596 |
+
//$this->error(sprintf('Problem during validation "%2$s" in model : %1$s.', get_class($this), $beforeSave));
|
597 |
+
return false;
|
598 |
+
}
|
599 |
+
}
|
600 |
+
|
601 |
+
/*prepare a format list for the update and insert function*/
|
602 |
+
$fieldsFormats=array();
|
603 |
+
if(!is_array($this->pk) && isset($this->values[$this->pk])) unset($this->values[$this->pk]);
|
604 |
+
foreach($this->values as $key =>$val){
|
605 |
+
if(!isset($this->columns[$key]['html'])) $this->values[$key]=strip_tags($val);
|
606 |
+
/* let's correct the type of the values based on the one defined in the model*/
|
607 |
+
if(in_array($val, array('[increment]','[decrement]'))){
|
608 |
+
$fieldsFormats[]=$val;
|
609 |
+
$this->specialUpdate=true;
|
610 |
+
}else{
|
611 |
+
//dbg($this->values);
|
612 |
+
if(!isset($this->columns[$key]['type'])){
|
613 |
+
$this->columns[$key]['type']='default';
|
614 |
+
}
|
615 |
+
switch($this->columns[$key]['type']){
|
616 |
+
case 'integer':
|
617 |
+
case 'boolean':
|
618 |
+
$fieldsFormats[]="%d";
|
619 |
+
break;
|
620 |
+
default:
|
621 |
+
$fieldsFormats[]="%s";
|
622 |
+
|
623 |
+
}
|
624 |
+
}
|
625 |
+
|
626 |
+
}
|
627 |
+
|
628 |
+
if($this->fieldValid && !$this->validateFields()) {
|
629 |
+
$this->error(__('Error Validating the fields',WYSIJA),true);
|
630 |
+
$this->stay=true;
|
631 |
+
return false;
|
632 |
+
}
|
633 |
+
|
634 |
+
global $wpdb;
|
635 |
+
|
636 |
+
// if dbg is on we track the duration of the query
|
637 |
+
if($this->dbg){
|
638 |
+
$this->timer_start();
|
639 |
+
}
|
640 |
+
|
641 |
+
if($update){
|
642 |
+
|
643 |
+
if( $this->specialUpdate || isset($this->conditions['equal']) || isset($this->conditions['notequal']) || isset($this->conditions['like'])){
|
644 |
+
|
645 |
+
$resultSave=$this->specialUpdate($this->getPrefix().$this->table_name,$this->values,$this->conditions,$fieldsFormats);
|
646 |
+
$this->logError();
|
647 |
+
}else{
|
648 |
+
|
649 |
+
$wpdb->update($this->getPrefix().$this->table_name,$this->values,$this->conditions,$fieldsFormats);
|
650 |
+
$this->logError();
|
651 |
+
$resultSave=$wpdb->result;
|
652 |
+
}
|
653 |
+
|
654 |
+
}else{
|
655 |
+
if($this->replaceQRY){
|
656 |
+
$resultSave=$wpdb->replace($this->getPrefix().$this->table_name,$this->values,$fieldsFormats);
|
657 |
+
$this->logError();
|
658 |
+
}else{
|
659 |
+
|
660 |
+
if($this->ignore) $resultSave=$wpdb->insert($this->getPrefix().$this->table_name,$this->values,$fieldsFormats);
|
661 |
+
else $resultSave=$wpdb->insert($this->getPrefix().$this->table_name,$this->values,$fieldsFormats);
|
662 |
+
|
663 |
+
$this->logError();
|
664 |
+
//dbg('hello');
|
665 |
+
}
|
666 |
+
|
667 |
+
}
|
668 |
+
|
669 |
+
// if dbg is on we track the duration of the query
|
670 |
+
if($this->dbg){
|
671 |
+
$this->timer_stop();
|
672 |
+
$this->keepQry('save');
|
673 |
+
}
|
674 |
+
|
675 |
+
if(!$resultSave){
|
676 |
+
$wpdb->show_errors();
|
677 |
+
return false;
|
678 |
+
}else{
|
679 |
+
if($update){
|
680 |
+
if(isset($this->conditions[$this->getPk()])){
|
681 |
+
$resultSave=$this->conditions[$this->getPk()];
|
682 |
+
}else{
|
683 |
+
if(isset($this->conditions[$this->getPk(1)])) $resultSave=$this->conditions[$this->getPk(1)];
|
684 |
+
}
|
685 |
+
|
686 |
+
}else{
|
687 |
+
$resultSave=$wpdb->insert_id;
|
688 |
+
}
|
689 |
+
}
|
690 |
+
|
691 |
+
$wpdb->flush();
|
692 |
+
|
693 |
+
if(method_exists($this,$afterSave)){
|
694 |
+
if(!$this->$afterSave($resultSave)){
|
695 |
+
//$this->error(sprintf('Problem during validation "%2$s" in model : %1$s.', get_class($this), $afterSave));
|
696 |
+
return false;
|
697 |
+
}
|
698 |
+
}
|
699 |
+
return $resultSave;
|
700 |
+
}
|
701 |
+
|
702 |
+
|
703 |
+
function insertMany($values){
|
704 |
+
$fields=array_keys($values[0]);
|
705 |
+
|
706 |
+
$query='INSERT INTO `'.$this->getPrefix().$this->table_name.'` (`' . implode( '`,`', $fields ) . '`) VALUES ';
|
707 |
+
|
708 |
+
$total=count($values);
|
709 |
+
$i=1;
|
710 |
+
foreach($values as &$vals){
|
711 |
+
foreach($vals as &$v) $v=mysql_real_escape_string($v);
|
712 |
+
$query.= "('" . implode( "','", $vals )."')";
|
713 |
+
if($i<$total) $query.=',';
|
714 |
+
$i++;
|
715 |
+
}
|
716 |
+
|
717 |
+
$this->query($query.$myvalues);
|
718 |
+
|
719 |
+
}
|
720 |
+
|
721 |
+
/**
|
722 |
+
* validate the fields type(defined in each model) in the save procedure
|
723 |
+
* @return type
|
724 |
+
*/
|
725 |
+
function validateFields(){
|
726 |
+
$error=false;
|
727 |
+
foreach($this->values as $key =>$val){
|
728 |
+
if(isset($this->columns[$key]['req']) && !$val && $this->columns[$key]['type']!='boolean'){
|
729 |
+
$this->error(sprintf(__('Field "%1$s" is required in table "%2$s".',WYSIJA), $key,$this->table_name),true);
|
730 |
+
$error=true;
|
731 |
+
}
|
732 |
+
/* let's correct the type of the values based on the one defined in the model*/
|
733 |
+
switch($this->columns[$key]['type']){
|
734 |
+
case "email":
|
735 |
+
$userHelper = WYSIJA::get('user','helper');
|
736 |
+
if(!$userHelper->validEmail($val)){
|
737 |
+
$this->error(sprintf(__('Field "%1$s" needs to be a valid Email.',WYSIJA), $key),true);
|
738 |
+
$error=true;
|
739 |
+
}
|
740 |
+
break;
|
741 |
+
}
|
742 |
+
}
|
743 |
+
|
744 |
+
if($error) return false;
|
745 |
+
return true;
|
746 |
+
}
|
747 |
+
|
748 |
+
/**
|
749 |
+
* delete procedure
|
750 |
+
* @global type $wpdb
|
751 |
+
* @param type $conditions
|
752 |
+
* @return type
|
753 |
+
*/
|
754 |
+
function delete($conditions){
|
755 |
+
$query='DELETE FROM `'.$this->getPrefix().$this->table_name.'`';
|
756 |
+
|
757 |
+
if($this->setConditions($conditions)){
|
758 |
+
$whereQuery=$this->makeWhere();
|
759 |
+
if(!$whereQuery){
|
760 |
+
$this->error('Cannot delete element without conditions in model : '.get_class($this));
|
761 |
+
}
|
762 |
+
}else{
|
763 |
+
$this->error('Cannot delete element without conditions in model : '.get_class($this));
|
764 |
+
return false;
|
765 |
+
}
|
766 |
+
$result=$this->beforeDelete($conditions);
|
767 |
+
if($result) $result=$this->query($query.$whereQuery);
|
768 |
+
else return false;
|
769 |
+
$this->afterDelete();
|
770 |
+
|
771 |
+
return true;
|
772 |
+
}
|
773 |
+
|
774 |
+
function exists($conditions){
|
775 |
+
|
776 |
+
$query='SELECT '.$this->getPk().' FROM `'.$this->getSelectTableName().'`';
|
777 |
+
|
778 |
+
$query.=$this->makeJoins();
|
779 |
+
if($this->setConditions($conditions)){
|
780 |
+
$whereQuery=$this->makeWhere();
|
781 |
+
if(!$whereQuery){
|
782 |
+
$this->error('Cannot test element without conditions in model : '.get_class($this));
|
783 |
+
}
|
784 |
+
}else{
|
785 |
+
$this->error('Cannot test element without conditions in model : '.get_class($this));
|
786 |
+
return false;
|
787 |
+
}
|
788 |
+
$res=$this->query('get_res',$query.$whereQuery, ARRAY_A);
|
789 |
+
if($res) return $res;
|
790 |
+
else return false;
|
791 |
+
}
|
792 |
+
|
793 |
+
function getPk($numb=0){
|
794 |
+
$pk=$this->pk;
|
795 |
+
if(is_array($pk)) $pk=$pk[$numb];
|
796 |
+
return $pk;
|
797 |
+
}
|
798 |
+
|
799 |
+
/**
|
800 |
+
* set the values after verifying them
|
801 |
+
* @param type $values
|
802 |
+
* @return type
|
803 |
+
*/
|
804 |
+
function setValues($values){
|
805 |
+
if($this->colCheck && !$this->checkAreColumns($values)) return false;
|
806 |
+
|
807 |
+
$this->values=array();
|
808 |
+
$this->values=$values;
|
809 |
+
return true;
|
810 |
+
}
|
811 |
+
|
812 |
+
/**
|
813 |
+
*
|
814 |
+
* @param type $values
|
815 |
+
* @return type
|
816 |
+
*/
|
817 |
+
function setJoin($joins){
|
818 |
+
$this->joins=$joins;
|
819 |
+
return true;
|
820 |
+
}
|
821 |
+
|
822 |
+
/**
|
823 |
+
* set the conditions after verifying them
|
824 |
+
* @param type $conditions
|
825 |
+
* @return type
|
826 |
+
*/
|
827 |
+
function setConditions($conditions,$update=false){
|
828 |
+
if($conditions && is_array($conditions)){
|
829 |
+
|
830 |
+
$this->conditions=array();
|
831 |
+
if($update){
|
832 |
+
foreach($conditions as $key =>$cond){
|
833 |
+
if($this->colCheck && !$this->checkAreColumns($conditions)) return false;
|
834 |
+
|
835 |
+
if(is_array($cond)){
|
836 |
+
$this->specialUpdate=true;
|
837 |
+
$this->conditions=$conditions;
|
838 |
+
|
839 |
+
return true;
|
840 |
+
}else $this->conditions[$key]=$cond;
|
841 |
+
|
842 |
+
}
|
843 |
+
} else {
|
844 |
+
foreach($conditions as $key => $cond) {
|
845 |
+
if(!in_array($key, $this->comparisonKeys /*array('like','equal','notequal','greater','less','greater_eq','less_eq')*/)){
|
846 |
+
if($this->colCheck && !$this->checkAreColumns($conditions)) return false;
|
847 |
+
if(array_key_exists('equal', $this->conditions) === false) $this->conditions['equal'] = array();
|
848 |
+
$this->conditions['equal'][$key] = $cond;
|
849 |
+
}else{
|
850 |
+
if($this->colCheck && !$this->checkAreColumns($cond)) return false;
|
851 |
+
$this->conditions[$key]=$cond;
|
852 |
+
}
|
853 |
+
|
854 |
+
}
|
855 |
+
}
|
856 |
+
|
857 |
+
return true;
|
858 |
+
}else return false;
|
859 |
+
}
|
860 |
+
|
861 |
+
/**
|
862 |
+
* check that the columns corresponds to the columns in the model
|
863 |
+
* @param type $arrayColumns
|
864 |
+
* @return type
|
865 |
+
*/
|
866 |
+
function checkAreColumns($columns){
|
867 |
+
if($this->noCheck) return true;
|
868 |
+
foreach($columns as $column => $values) {
|
869 |
+
// skip when column is a comparison key
|
870 |
+
if(in_array($column, $this->comparisonKeys)) continue;
|
871 |
+
|
872 |
+
$columnName = $column;
|
873 |
+
if(!isset($this->columns[$columnName])){
|
874 |
+
$this->error(sprintf('Column %1$s does not exist in model : %2$s', $columnName, get_class($this)));
|
875 |
+
return false;
|
876 |
+
}
|
877 |
+
}
|
878 |
+
return true;
|
879 |
+
}
|
880 |
+
|
881 |
+
function timer_start() {
|
882 |
+
$this->query_duration = 0;
|
883 |
+
$this->time_start = microtime( true );
|
884 |
+
return true;
|
885 |
+
}
|
886 |
+
|
887 |
+
function timer_stop() {
|
888 |
+
$this->query_duration = ( microtime( true ) - $this->time_start );
|
889 |
+
}
|
890 |
+
|
891 |
+
function query($query,$arg2='',$arg3=ARRAY_A){
|
892 |
+
global $wpdb;
|
893 |
+
$this->sql_error = false;
|
894 |
+
if(!$arg2) $query = str_replace(array('[wysija]','[wp]'),array($this->getPrefix(),$wpdb->prefix),$query);
|
895 |
+
else $arg2 = str_replace(array('[wysija]','[wp]'),array($this->getPrefix(),$wpdb->prefix),$arg2);
|
896 |
+
|
897 |
+
// if dbg is on we track the duration of the query
|
898 |
+
if($this->dbg){
|
899 |
+
$this->timer_start();
|
900 |
+
}
|
901 |
+
|
902 |
+
switch($query){
|
903 |
+
case 'get_row':
|
904 |
+
$result = $wpdb->get_row($arg2,$arg3);
|
905 |
+
$this->logError();
|
906 |
+
break;
|
907 |
+
case 'get_res':
|
908 |
+
$result = $wpdb->get_results($arg2,$arg3);
|
909 |
+
//$this->escapeQuotesFromRes($results);
|
910 |
+
$this->logError();
|
911 |
+
break;
|
912 |
+
default:
|
913 |
+
$result = $wpdb->query($query);
|
914 |
+
$this->logError();
|
915 |
+
|
916 |
+
// get the last insert id if it's an insert query
|
917 |
+
if(substr($query, 0, 6) == 'INSERT') $result = $wpdb->insert_id;
|
918 |
+
|
919 |
+
}
|
920 |
+
// if dbg is on we track the duration of the query
|
921 |
+
if($this->dbg){
|
922 |
+
$this->timer_stop();
|
923 |
+
$this->keepQry('query');
|
924 |
+
}
|
925 |
+
return $result;
|
926 |
+
}
|
927 |
+
|
928 |
+
function logError(){
|
929 |
+
if(defined('WYSIJA_DBG') && WYSIJA_DBG>1){
|
930 |
+
global $wysija_queries_errors, $wpdb;
|
931 |
+
if(!$wysija_queries_errors) $wysija_queries_errors=array();
|
932 |
+
|
933 |
+
$this->sql_error=mysql_error($wpdb->dbh);
|
934 |
+
|
935 |
+
if($this->sql_error) {
|
936 |
+
$wysija_queries_errors[]=$this->sql_error;
|
937 |
+
WYSIJA::log('queries_errors',$this->sql_error,'query_errors');
|
938 |
+
}
|
939 |
+
|
940 |
+
}
|
941 |
+
|
942 |
+
}
|
943 |
+
|
944 |
+
function keepQry($from='wpdb'){
|
945 |
+
global $wpdb,$wysija_queries;
|
946 |
+
|
947 |
+
//if($qry) $wysija_queries['[FROM '.$from.']'] = array('duration' => $this->query_duration , 'query' => $qry);
|
948 |
+
//else
|
949 |
+
$wysija_queries[$from][] = array('duration' => $this->query_duration , 'query' => $wpdb->last_query);
|
950 |
+
}
|
951 |
+
|
952 |
+
function getAffectedRows(){
|
953 |
+
global $wpdb;
|
954 |
+
return $wpdb->rows_affected;
|
955 |
+
//return mysql_affected_rows( $this->dbh );
|
956 |
+
}
|
957 |
+
|
958 |
+
function getErrorMsg(){
|
959 |
+
global $wpdb;
|
960 |
+
return $wpdb->show_errors();
|
961 |
+
}
|
962 |
+
/**
|
963 |
+
* get the full prefix for the table
|
964 |
+
* @global type $wpdb
|
965 |
+
* @return type
|
966 |
+
*/
|
967 |
+
function getPrefix(){
|
968 |
+
if($this->tableWP) return $this->wpprefix.$this->table_prefix;
|
969 |
+
else return $this->wpprefix.$this->table_prefix.'_';
|
970 |
+
}
|
971 |
+
|
972 |
+
/**
|
973 |
+
* this function allows you to get the prefix from the main site on a multisite
|
974 |
+
* @return type
|
975 |
+
*/
|
976 |
+
function get_site_prefix($blog_id=1){
|
977 |
+
|
978 |
+
switch_to_blog( $blog_id );
|
979 |
+
global $wpdb;
|
980 |
+
$main_site_prefix=$wpdb->prefix;
|
981 |
+
restore_current_blog();
|
982 |
+
|
983 |
+
if($this->tableWP) return $main_site_prefix.$this->table_prefix;
|
984 |
+
else return $main_site_prefix.$this->table_prefix.'_';
|
985 |
+
}
|
986 |
+
|
987 |
+
/**
|
988 |
+
*
|
989 |
+
* @param type $field_name name of field which will become a key
|
990 |
+
* @param array $dataset list of records
|
991 |
+
* @param boolean $removing_field_name decide if we should remove field name from output dataset
|
992 |
+
* @param string $field_name_as_value a field in which we consider its value as value of $field_name
|
993 |
+
* @return array field based indexed dataset
|
994 |
+
*/
|
995 |
+
protected function indexing_dataset_by_field($field_name, Array $dataset, $removing_field_name = false, $field_name_as_value = null){
|
996 |
+
if (empty($dataset))
|
997 |
+
return array();
|
998 |
+
$tmp = array();
|
999 |
+
foreach ($dataset as $record){
|
1000 |
+
if (isset($record[$field_name]))
|
1001 |
+
{
|
1002 |
+
if (!empty($field_name_as_value)){
|
1003 |
+
$tmp[$record[$field_name]] = isset($record[$field_name_as_value]) ? $record[$field_name_as_value] : null;
|
1004 |
+
continue;
|
1005 |
+
}
|
1006 |
+
$tmp[$record[$field_name]] = $record;
|
1007 |
+
if ($removing_field_name)
|
1008 |
+
unset($tmp[$record[$field_name]][$field_name]);
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
}
|
1012 |
+
return $tmp;
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
function beforeInsert(){
|
1016 |
+
return true;
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
function afterInsert($resultSaveID){
|
1020 |
+
return true;
|
1021 |
+
}
|
1022 |
+
function beforeDelete($conditions){
|
1023 |
+
return true;
|
1024 |
+
}
|
1025 |
+
|
1026 |
+
function afterDelete(){
|
1027 |
+
return true;
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
function beforeUpdate($id = null){
|
1031 |
+
return true;
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
function afterUpdate($resultSaveID){
|
1035 |
+
return true;
|
1036 |
+
}
|
1037 |
|
1038 |
}
|
core/module/module.php
CHANGED
@@ -3,19 +3,19 @@
|
|
3 |
defined('WYSIJA') or die('Restricted access');
|
4 |
|
5 |
class WYSIJA_module extends WYSIJA_control{
|
6 |
-
|
7 |
/**
|
8 |
* ID of module
|
9 |
* @var string
|
10 |
*/
|
11 |
protected $name;
|
12 |
-
|
13 |
/**
|
14 |
* view class of module
|
15 |
* @var string
|
16 |
*/
|
17 |
public $view;
|
18 |
-
|
19 |
/**
|
20 |
* instance of view class of module
|
21 |
* @var string
|
@@ -27,74 +27,74 @@ class WYSIJA_module extends WYSIJA_control{
|
|
27 |
* action/view of a hook
|
28 |
* @var string
|
29 |
*/
|
30 |
-
|
31 |
protected $view_show;
|
32 |
-
|
33 |
/**
|
34 |
* data which view class will pull from
|
35 |
* @var array
|
36 |
*/
|
37 |
protected $data;
|
38 |
-
|
39 |
protected $extended_plugin='wysija-newsletters';
|
40 |
-
|
41 |
|
42 |
|
43 |
/**
|
44 |
* Define hook name and list of modules of each hook
|
45 |
* @var Array
|
46 |
* @todo: implement hook management which allows to manage hooks from admin side
|
47 |
-
*/
|
48 |
-
|
49 |
protected $is_premium = false;
|
50 |
-
|
51 |
public static $hooks = array(
|
52 |
'hook_stats' => array(
|
53 |
// 'stats_newsletters_in_time',
|
54 |
-
'stats_top_newsletters',
|
55 |
'stats_top_subscribers',
|
56 |
'stats_top_links',
|
57 |
'stats_new_subscribers',
|
58 |
'stats_subscriptions',
|
59 |
'stats_top_domains'
|
60 |
),
|
61 |
-
|
62 |
// the left block in the page "subscriber detail"
|
63 |
'hook_subscriber_left' => array(
|
64 |
),
|
65 |
-
|
66 |
// the righ block in the page "subscriber detail"
|
67 |
'hook_subscriber_right' => array(
|
68 |
'stats_subscriber'
|
69 |
-
),
|
70 |
'hook_subscriber_bottom' => array(
|
71 |
'stats_subscribers_std',
|
72 |
// 'stats_newsletters_in_time' // not in use
|
73 |
),
|
74 |
// top of newsletter (viewstats) page
|
75 |
'hook_newsletter_top' => array(
|
76 |
-
|
77 |
'stats_newsletter_std',
|
78 |
'stats_newsletter',
|
79 |
// 'stats_reportcards_std'
|
80 |
),
|
81 |
-
|
82 |
// Newsletters >> Newsletter detail: bottom block
|
83 |
'hook_newsletter_bottom' => array(
|
84 |
//'stats_newsletter_std',
|
85 |
// 'stats_newsletters_in_time'
|
86 |
),
|
87 |
-
|
88 |
// the block "super advanced" in Settings >> Advanced tab
|
89 |
'hook_settings_super_advanced' => array(
|
90 |
'archive_std'
|
91 |
),
|
92 |
-
|
93 |
// event: before saving settings (Admin)
|
94 |
'hook_settings_before_save' => array(
|
95 |
'archive_std'
|
96 |
)
|
97 |
-
);
|
98 |
/**
|
99 |
* Constructor
|
100 |
* This is neccessary to override default action of WYSIJA_control::WYSIJA_control(),
|
@@ -110,16 +110,16 @@ class WYSIJA_module extends WYSIJA_control{
|
|
110 |
if (!empty($this->view_obj) && !empty($this->model_obj)){
|
111 |
$this->view_obj->model = $this->model_obj;
|
112 |
}
|
113 |
-
|
114 |
$this->data['module_name'] = $this->name;
|
115 |
-
|
116 |
-
|
117 |
$model_config=WYSIJA::get('config','model');
|
118 |
if($model_config->getValue('premium_key'))
|
119 |
$this->is_premium = true;
|
120 |
$this->data['is_premium'] = $this->is_premium;
|
121 |
}
|
122 |
-
|
123 |
/**
|
124 |
* get name of module
|
125 |
* @return string
|
@@ -127,7 +127,7 @@ class WYSIJA_module extends WYSIJA_control{
|
|
127 |
public function get_name(){
|
128 |
return $this->name;
|
129 |
}
|
130 |
-
|
131 |
/**
|
132 |
* Get unique link to the module and hook. This link will be displayed as an independent page and actually it renders [wysijap] postype
|
133 |
* @param string $module_name
|
@@ -147,7 +147,7 @@ class WYSIJA_module extends WYSIJA_control{
|
|
147 |
));
|
148 |
return WYSIJA::get_permalink($model_config->getValue('confirm_email_link'),$params);
|
149 |
}
|
150 |
-
|
151 |
/**
|
152 |
* Return Hooks List
|
153 |
* @param string $hook_name name of hook
|
@@ -161,7 +161,7 @@ class WYSIJA_module extends WYSIJA_control{
|
|
161 |
return isset($modules[$module_name]) ? array($modules[$module_name]) : array();
|
162 |
return $modules;
|
163 |
}
|
164 |
-
|
165 |
/**
|
166 |
* Get all registered hooks and modules
|
167 |
* @return Array
|
@@ -175,9 +175,9 @@ class WYSIJA_module extends WYSIJA_control{
|
|
175 |
* @param string $hook_name
|
176 |
* @param string $params
|
177 |
* @param string $extended_plugin
|
178 |
-
*
|
179 |
-
* @todo Performance factor:
|
180 |
-
* We are calling the same method for free / Premium version.
|
181 |
* Some modules don't exist at free side.
|
182 |
* Some modules don't exist at Premium side.
|
183 |
* This fact leads to an other fact: we have to check_exist() in both cases.
|
@@ -190,23 +190,23 @@ class WYSIJA_module extends WYSIJA_control{
|
|
190 |
foreach (self::$hooks[$hook_name] as $module_name){
|
191 |
$module = WYSIJA::get($module_name,'module',false,$extended_plugin);
|
192 |
if(!empty($module) && method_exists($module, $hook_name))
|
193 |
-
$hook_output .= $module->$hook_name($params);
|
194 |
}
|
195 |
}
|
196 |
return $hook_output;
|
197 |
}
|
198 |
-
|
199 |
/**
|
200 |
* get an instance of a module class
|
201 |
* @param string $module_name module to be loaded
|
202 |
* @param type $extended_plugin : used only when calling the url from a different plugin it is used watch those files :
|
203 |
* -core/controller.php line 21, 23 ,24
|
204 |
* @return an instance of WYSIJA_module or its derived classes
|
205 |
-
*/
|
206 |
public static function get_instance_by_name($module_name,$extended_plugin='wysija-newsletters'){
|
207 |
return WYSIJA::get($module_name,'module',false, $extended_plugin);
|
208 |
}
|
209 |
-
|
210 |
/**
|
211 |
* Render a view/action
|
212 |
* @return string
|
@@ -226,22 +226,22 @@ class WYSIJA_module extends WYSIJA_control{
|
|
226 |
}
|
227 |
}
|
228 |
}
|
229 |
-
|
230 |
/**
|
231 |
* initialize WYSIJA_view instance
|
232 |
* @return WYSIJA_view
|
233 |
*/
|
234 |
protected function get_view_obj(){
|
235 |
require_once(WYSIJA_CORE.'view.php');
|
236 |
-
require_once(WYSIJA_VIEWS.WYSIJA_SIDE.'.php');
|
237 |
if (empty($this->view_obj)){
|
238 |
-
|
239 |
-
$view_dir=WYSIJA_PLG_DIR.$this->extended_plugin.DS.'modules'.DS.$this->name; // quickfix, @todo
|
240 |
$class_path=$view_dir.DS.$this->view.'.php';// @todo: check exists
|
241 |
$class_name = strtoupper('wysija').'_module_view_'.$this->view;
|
242 |
require_once(WYSIJA_CORE.'view.php');
|
243 |
require_once($class_path);
|
244 |
-
$this->view_obj = new $class_name();
|
245 |
}
|
246 |
return $this->view_obj;
|
247 |
}
|
3 |
defined('WYSIJA') or die('Restricted access');
|
4 |
|
5 |
class WYSIJA_module extends WYSIJA_control{
|
6 |
+
|
7 |
/**
|
8 |
* ID of module
|
9 |
* @var string
|
10 |
*/
|
11 |
protected $name;
|
12 |
+
|
13 |
/**
|
14 |
* view class of module
|
15 |
* @var string
|
16 |
*/
|
17 |
public $view;
|
18 |
+
|
19 |
/**
|
20 |
* instance of view class of module
|
21 |
* @var string
|
27 |
* action/view of a hook
|
28 |
* @var string
|
29 |
*/
|
30 |
+
|
31 |
protected $view_show;
|
32 |
+
|
33 |
/**
|
34 |
* data which view class will pull from
|
35 |
* @var array
|
36 |
*/
|
37 |
protected $data;
|
38 |
+
|
39 |
protected $extended_plugin='wysija-newsletters';
|
40 |
+
|
41 |
|
42 |
|
43 |
/**
|
44 |
* Define hook name and list of modules of each hook
|
45 |
* @var Array
|
46 |
* @todo: implement hook management which allows to manage hooks from admin side
|
47 |
+
*/
|
48 |
+
|
49 |
protected $is_premium = false;
|
50 |
+
|
51 |
public static $hooks = array(
|
52 |
'hook_stats' => array(
|
53 |
// 'stats_newsletters_in_time',
|
54 |
+
'stats_top_newsletters',
|
55 |
'stats_top_subscribers',
|
56 |
'stats_top_links',
|
57 |
'stats_new_subscribers',
|
58 |
'stats_subscriptions',
|
59 |
'stats_top_domains'
|
60 |
),
|
61 |
+
|
62 |
// the left block in the page "subscriber detail"
|
63 |
'hook_subscriber_left' => array(
|
64 |
),
|
65 |
+
|
66 |
// the righ block in the page "subscriber detail"
|
67 |
'hook_subscriber_right' => array(
|
68 |
'stats_subscriber'
|
69 |
+
),
|
70 |
'hook_subscriber_bottom' => array(
|
71 |
'stats_subscribers_std',
|
72 |
// 'stats_newsletters_in_time' // not in use
|
73 |
),
|
74 |
// top of newsletter (viewstats) page
|
75 |
'hook_newsletter_top' => array(
|
76 |
+
|
77 |
'stats_newsletter_std',
|
78 |
'stats_newsletter',
|
79 |
// 'stats_reportcards_std'
|
80 |
),
|
81 |
+
|
82 |
// Newsletters >> Newsletter detail: bottom block
|
83 |
'hook_newsletter_bottom' => array(
|
84 |
//'stats_newsletter_std',
|
85 |
// 'stats_newsletters_in_time'
|
86 |
),
|
87 |
+
|
88 |
// the block "super advanced" in Settings >> Advanced tab
|
89 |
'hook_settings_super_advanced' => array(
|
90 |
'archive_std'
|
91 |
),
|
92 |
+
|
93 |
// event: before saving settings (Admin)
|
94 |
'hook_settings_before_save' => array(
|
95 |
'archive_std'
|
96 |
)
|
97 |
+
);
|
98 |
/**
|
99 |
* Constructor
|
100 |
* This is neccessary to override default action of WYSIJA_control::WYSIJA_control(),
|
110 |
if (!empty($this->view_obj) && !empty($this->model_obj)){
|
111 |
$this->view_obj->model = $this->model_obj;
|
112 |
}
|
113 |
+
|
114 |
$this->data['module_name'] = $this->name;
|
115 |
+
|
116 |
+
|
117 |
$model_config=WYSIJA::get('config','model');
|
118 |
if($model_config->getValue('premium_key'))
|
119 |
$this->is_premium = true;
|
120 |
$this->data['is_premium'] = $this->is_premium;
|
121 |
}
|
122 |
+
|
123 |
/**
|
124 |
* get name of module
|
125 |
* @return string
|
127 |
public function get_name(){
|
128 |
return $this->name;
|
129 |
}
|
130 |
+
|
131 |
/**
|
132 |
* Get unique link to the module and hook. This link will be displayed as an independent page and actually it renders [wysijap] postype
|
133 |
* @param string $module_name
|
147 |
));
|
148 |
return WYSIJA::get_permalink($model_config->getValue('confirm_email_link'),$params);
|
149 |
}
|
150 |
+
|
151 |
/**
|
152 |
* Return Hooks List
|
153 |
* @param string $hook_name name of hook
|
161 |
return isset($modules[$module_name]) ? array($modules[$module_name]) : array();
|
162 |
return $modules;
|
163 |
}
|
164 |
+
|
165 |
/**
|
166 |
* Get all registered hooks and modules
|
167 |
* @return Array
|
175 |
* @param string $hook_name
|
176 |
* @param string $params
|
177 |
* @param string $extended_plugin
|
178 |
+
*
|
179 |
+
* @todo Performance factor:
|
180 |
+
* We are calling the same method for free / Premium version.
|
181 |
* Some modules don't exist at free side.
|
182 |
* Some modules don't exist at Premium side.
|
183 |
* This fact leads to an other fact: we have to check_exist() in both cases.
|
190 |
foreach (self::$hooks[$hook_name] as $module_name){
|
191 |
$module = WYSIJA::get($module_name,'module',false,$extended_plugin);
|
192 |
if(!empty($module) && method_exists($module, $hook_name))
|
193 |
+
$hook_output .= $module->$hook_name($params);
|
194 |
}
|
195 |
}
|
196 |
return $hook_output;
|
197 |
}
|
198 |
+
|
199 |
/**
|
200 |
* get an instance of a module class
|
201 |
* @param string $module_name module to be loaded
|
202 |
* @param type $extended_plugin : used only when calling the url from a different plugin it is used watch those files :
|
203 |
* -core/controller.php line 21, 23 ,24
|
204 |
* @return an instance of WYSIJA_module or its derived classes
|
205 |
+
*/
|
206 |
public static function get_instance_by_name($module_name,$extended_plugin='wysija-newsletters'){
|
207 |
return WYSIJA::get($module_name,'module',false, $extended_plugin);
|
208 |
}
|
209 |
+
|
210 |
/**
|
211 |
* Render a view/action
|
212 |
* @return string
|
226 |
}
|
227 |
}
|
228 |
}
|
229 |
+
|
230 |
/**
|
231 |
* initialize WYSIJA_view instance
|
232 |
* @return WYSIJA_view
|
233 |
*/
|
234 |
protected function get_view_obj(){
|
235 |
require_once(WYSIJA_CORE.'view.php');
|
236 |
+
require_once(WYSIJA_VIEWS.WYSIJA_SIDE.'.php');
|
237 |
if (empty($this->view_obj)){
|
238 |
+
|
239 |
+
$view_dir=WYSIJA_PLG_DIR.$this->extended_plugin.DS.'modules'.DS.$this->name; // quickfix, @todo
|
240 |
$class_path=$view_dir.DS.$this->view.'.php';// @todo: check exists
|
241 |
$class_name = strtoupper('wysija').'_module_view_'.$this->view;
|
242 |
require_once(WYSIJA_CORE.'view.php');
|
243 |
require_once($class_path);
|
244 |
+
$this->view_obj = new $class_name();
|
245 |
}
|
246 |
return $this->view_obj;
|
247 |
}
|
core/view.php
CHANGED
@@ -193,13 +193,7 @@ class WYSIJA_view extends WYSIJA_object{
|
|
193 |
|
194 |
if(count($messages)>0){
|
195 |
foreach($messages as $msg){
|
196 |
-
|
197 |
-
if(is_array($msg)) {
|
198 |
-
$msg = var_export($msg, true);
|
199 |
-
}
|
200 |
-
|
201 |
-
// display message
|
202 |
-
$html.='<li>'.$msg.'</li>';
|
203 |
}
|
204 |
}
|
205 |
|
193 |
|
194 |
if(count($messages)>0){
|
195 |
foreach($messages as $msg){
|
196 |
+
$html.='<li>'.$msg.'</li>';
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
}
|
198 |
}
|
199 |
|
css/admin-campaigns-dividers.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wysija_popup_content.divider{width:620px}.dividers ul{height:
|
1 |
+
.wysija_popup_content.divider{width:620px}.dividers ul{height:400px;width:620px;overflow:auto;margin:0 0 20px 0}.dividers li{text-align:center;padding:5px 2px}.dividers li a{padding:2px;display:block}.dividers li a.selected{padding:0;border:2px solid #DD561A}.dividers li img{vertical-align:middle}
|
css/admin-campaigns-medias.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.swfupload{vertical-align:middle}ul#sidemenu{bottom:-1px;float:none !important;font-weight:normal;left:0;margin:0 5px;overflow:hidden;float:none !important}.wysija-thumb{float:left;height:150px;margin:10px;width:150px;position:relative;border:2px dashed transparent;filter:alpha(opacity=60);-moz-opacity:0.6;opacity:0.6;margin:8px}.wysija-thumb:hover,.wysija-thumb.selected:hover{border-color:#000;border-style:dashed}.wysija-thumb.selected{border-color:#4a5b04;border-style:solid;filter:alpha(opacity=100);-moz-opacity:1;opacity:1}.wysija-thumb img{
|
1 |
+
.swfupload{vertical-align:middle}ul#sidemenu{bottom:-1px;float:none !important;font-weight:normal;left:0;margin:0 5px;overflow:hidden;float:none !important}.wysija-thumb{float:left;height:150px;margin:10px;width:150px;position:relative;border:2px dashed transparent;filter:alpha(opacity=60);-moz-opacity:0.6;opacity:0.6;margin:8px}.wysija-thumb:hover,.wysija-thumb.selected:hover{border-color:#000;border-style:dashed}.wysija-thumb.selected{border-color:#4a5b04;border-style:solid;filter:alpha(opacity=100);-moz-opacity:1;opacity:1}.wysija-thumb img{max-height:150px;max-width:150px}.wysija-thumb span.delete{background:url("../img/controls/icons.png") no-repeat scroll -100px 0 transparent;cursor:pointer;height:20px;text-indent:-9999px;display:block;width:20px}.wysija-thumb span.delete-wrap{background-color:#DFDFDF;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);border:1px solid #CCCCCC;border-radius:2px 2px 2px 2px;box-shadow:0 1px 0 rgba(0,0,0,0.15),0 0 2px 1px #fff inset;height:20px;position:absolute;right:2px;top:2px;margin:5px 3px 0 0;width:20px;display:none}.wysija-thumb span.thumb_url,.wysija-thumb span.url,.wysija-thumb span.width,.wysija-thumb span.height,.wysija-thumb span.identifier{display:none}.wysija-thumb:hover span.delete-wrap{display:block}.wysija-thumb span.delete:hover{background-position:-100px -20px}.clear{clear:both}.tablenav{margin-right:20px}#media-items{overflow:auto}.media-wp-upload #media-items{display:none}.media-browse #media-items{width:100%;height:340px;margin:0 0 10px 0}.media-wp-browse #media-items{width:100%;height:340px;margin:0 0 10px 0}#media-items em{margin:0 0 0 20px}#media-items,.ml-submit{float:left}.ml-submit{margin-top:15px;margin-left:15px}#loader{left:50%;position:relative;top:50%}#overlay{background-color:#FFFFFF;height:100%;opacity:0.8;position:absolute;width:100%;z-index:999;display:none}#flash-upload-ui{padding:10px 25px}.after-file-upload{padding:0 25px}.after-file-upload,.upload-flash-bypass,.howto{display:none}.wysija-thumb .slidetoggle,.wysija-thumb .toggle{display:none}.max-upload-size{margin:10px 0;display:block}
|
css/admin-campaigns-viewstats.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#posts-filter{margin-top:40px}#hook_newsletter_top{margin-top:20px}#hook_newsletter_top .left{
|
1 |
+
#posts-filter{margin-top:40px}#hook_newsletter_top{margin-top:20px}#hook_newsletter_top .left{width:50%}#hook_newsletter_top .actions{width:45%;margin-bottom:20px;padding-left:10px}.action_buttons a:first-child{margin-left:0}.action_buttons{display:block}table.newsletter-stats-block{margin-top:10px}table.newsletter-stats-block td.label{width:25%;font-weight:bold}.wrap .button-secondary2{top:auto !important}.googletrackingcode .action_buttons{padding-left:0}.googletrackingcode{padding-top:10px}.wrap .button-secondary2:first-child{margin-left:0}
|
css/admin-campaigns.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#wysija-app{padding-top:10px}.icon32{margin-top:0px !important}#posts-filter{clear:both}#wysija-app h2{display:inline}#icon-edit-news{background:url(../img/mail-big.png) no-repeat scroll 0 5px transparent}#TB_window{display:block}.moredetails{display:none}.sending,.scheduled{background-color:#d5f0e6}.autonl.sending{background-color:#D7E6F2}#wysija-campaign .listmissing{background-color:#EFD5D5}#preview-receiver{width:230px;vertical-align:middle;margin:0 5px 0 0}.ml-submit{margin:15px 15px 0 15px}.automatic-nl{display:none}#titlediv .titlebox{font-size:1.7em;background-color:#FFFFFF;border-color:#CCCCCC;line-height:100%;outline:medium none;padding:3px 8px;width:100%}label .description{cursor:auto}.about-wrap .feature-section.three-col div{float:left;width:28%}#socials-block div{float:none;margin:5px 5px 2px 0;width:100%}.progress_bar{padding-bottom:10px}.progress_bar .bar{display:block;width:100%;height:22px;float:left;margin-right:10px;background:#eef6fc;border:1px solid #bbbbbb;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;line-height:22px;position:relative}.progress_bar .progress{display:block;background:#69b1e9;height:100%}.progress_bar .percent{height:100%;position:absolute;top:0px;left:10px}#wysija-badge{position:absolute;top:0;right:0;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.3);padding-top:91px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/wysija-badge.png") no-repeat}#review-follow{position:relative;height:177px}#review-follow div{float:left;top:0}#review-follow .review-left{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/save-the-kitten.jpg") no-repeat;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef;padding-right:10px}#review-follow h4{margin:0 !important}#review-follow .review-left.small{width:450px}#review-follow .review-left.medium{width:490px}#review-follow .review-left.large{width:540px}#review-follow .small .description{margin-top:24px}#review-follow .medium .description{margin-top:20px}#review-follow .large .description{margin-top:18px}#review-follow .review-left p{margin-left:20px}#review-follow .review-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_middle.jpg") no-repeat
|
1 |
+
#wysija-app{padding-top:10px}.icon32{margin-top:0px !important}#posts-filter{clear:both}#wysija-app h2{display:inline}#icon-edit-news{background:url(../img/mail-big.png) no-repeat scroll 0 5px transparent}#TB_window{display:block}.moredetails{display:none}.sending,.scheduled{background-color:#d5f0e6}.autonl.sending{background-color:#D7E6F2}#wysija-campaign .listmissing{background-color:#EFD5D5}#preview-receiver{width:230px;vertical-align:middle;margin:0 5px 0 0}.ml-submit{margin:15px 15px 0 15px}.automatic-nl{display:none}#titlediv .titlebox{font-size:1.7em;background-color:#FFFFFF;border-color:#CCCCCC;line-height:100%;outline:medium none;padding:3px 8px;width:100%}label .description{cursor:auto}.about-wrap .feature-section.three-col div{float:left;width:28%}#socials-block div{float:none;margin:5px 5px 2px 0;width:100%}.progress_bar{padding-bottom:10px}.progress_bar .bar{display:block;width:100%;height:22px;float:left;margin-right:10px;background:#eef6fc;border:1px solid #bbbbbb;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;line-height:22px;position:relative}.progress_bar .progress{display:block;background:#69b1e9;height:100%}.progress_bar .percent{height:100%;position:absolute;top:0px;left:10px}#wysija-badge{position:absolute;top:0;right:0;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.3);padding-top:91px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/wysija-badge.png") no-repeat}#review-follow{position:relative;height:177px}#review-follow div{float:left;top:0}#review-follow .review-left{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/save-the-kitten.jpg") no-repeat;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef;padding-right:10px}#review-follow h4{margin:0 !important}#review-follow .review-left.small{width:450px}#review-follow .review-left.medium{width:490px}#review-follow .review-left.large{width:540px}#review-follow .small .description{margin-top:24px}#review-follow .medium .description{margin-top:20px}#review-follow .large .description{margin-top:18px}#review-follow .review-left p{margin-left:20px}#review-follow .review-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_middle.jpg") no-repeat;width:62px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .subscribe-middle{width:220px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .socials{margin-left:30px}#review-follow .follow-left{width:220px;height:175px;background-color:#f8f8f8;border-top:1px solid #efefef;border-bottom:1px solid #efefef}#review-follow .follow-right{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow_right.jpg") no-repeat;width:100px;height:175px}#review-follow .follow-right38{background:url("http://s-plugins.wordpress.org/wysija-newsletters/assets/update_page/arrow-right-38.jpg") no-repeat;width:100px;height:175px}#review-follow .review-left .description{margin-left:146px}#review-follow .link-cat-review{height:140px;left:20px;position:absolute;top:21px;width:120px;outline:medium none}a.ctaupdate,span.ctaupdate{font-size:12px}.pds-links,.pds-totalvotes-outer{display:none !important}#polldaddy_embed_0{width:680px;margin-left:-30px}span.local_time{margin-left:10px}#hook_newsletter_top .hook-column{width:50%}.card-title{font-weight:bold}.report-card{padding-top:10px}.googletrackingcode .action_buttons{padding-left:44px;padding-top:5px}.googletrackingcode span{font-weight:bold}.mpoet-page h1{font-size:34px}.mpoet-page h1,.mpoet-page h2,.mpoet-page h3,.mpoet-page h4{color:#626262;font-family:"Arial","Open Sans",sans-serif;font-weight:bold}.mpoet-page h1 span.version{color:#5e869b}
|
css/admin-config.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
tr.title_row>td{padding-left:0}#wysija-tabs a{font-size:14px}#wysija-tabs a
|
1 |
+
tr.title_row>td{padding-left:0}#wysija-tabs a{font-size:14px}#wysija-tabs a.tab-premium{background-color:#d7e6f2;font-weight:bold}p.submit{padding:1em 1.4em 1em 0}span.title{font-size:16px;margin:0;color:#000}.choice-under15,.ms-choice-under15{float:right;display:block;width:360px}#wysija-settings input[type="checkbox"],#wysija-settings input[type="radio"]{margin-right:6px;vertical-align:baseline}#wysija-settings label input[type="checkbox"],#cron_page_hit_trigger-1{margin-left:0}#wysija-settings .button-secondary{margin-left:6px}#wysija-settings .form-table th{width:300px}#wysija-settings .form-table th.row{border:1px solid #AAAAAA}#warning-msg-frequency{background-color:#FFFFE0;border-color:#E6DB55}#warning-msg-frequency{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 0.6em}#warning-msg-frequency ul{margin:0}#wysija-settings .form-table th.rolestitle{padding:10px 0 10px 10px;text-align:left;vertical-align:middle;width:220px}#wysija-settings .form-table th.rolestable{padding:3px;text-align:center;vertical-align:middle;width:110px;word-wrap:break-word}#wysija-settings .form-table td.rolestable{padding:6px 0;text-align:center}#wysija-settings .form-table td.title{padding:10px 0 10px 10px;text-align:left;vertical-align:middle}#wysija-settings .form-table td.title p{margin:0}#wysija-settings .form-table td{vertical-align:top}#wysija-settings #bounce .intro{margin:10px 0 20px 10px}#wysija-settings #bounce #bounce-process-auto,#wysija-settings #bounce #bounce-connector{margin-left:0 !important}#wysija-settings #sendingmethod .methods{border-bottom:1px solid #000}#wysija-settings #sendingmethod .choice-sending-method-site{border-top:1px solid #cccccc}#wysija-settings #sendingmethod .choice-sending-method-site th,#wysija-settings #sendingmethod .choice-sending-method-site td{padding-top:18px}label.dkim{margin-right:20px}.cronleft,.cronright{float:left}.cronleft{width:20px;margin-right:10px}#cron_manual_linkname p{margin:0}.labelcheck{float:left;margin-right:15px}.checkbox_optin_label{margin:6px 6px 0 0;float:left}.checkbox_optin_value{float:left;width:500px}#smtp-rest-label{display:none;margin-left:10px}#wysija-settings #multisite #form-ms-config th{width:455px}#wysija-settings #multisite #ms-sendingmethod th{width:300px}#wysija-settings #multisite .intro{margin:0 0 0 10px}#wysija-settings #sendingmethod .methods input,#wysija-settings #multisite .methods input{margin:0 5px 0 0;float:left}#wysija-settings #sendingmethod .methods h3,#wysija-settings #multisite .methods p.title{float:left;margin:0 !important}#wysija-settings #multisite .choice-one-for-all{display:none}#wysija-settings a.view_all{font-style:italic}#wysija-settings .cronright label{display:block;margin-bottom:10px}#wysija-settings .cronright label span{margin-left:36px}#wysija-settings .capabilities_form{width:400px}span.icon{display:block;height:20px;width:20px;cursor:pointer}.geeky-option a,.geeky-option span{float:left}.show-more-geeky-options span{background:url(../img/controls/icons.png) no-repeat -200px 0}.show-more-geeky-options:hover span{background:url(../img/controls/icons.png) no-repeat -200px -20px}.hide-geeky-options span{background:url(../img/controls/icons.png) no-repeat -220px 0}.hide-geeky-options:hover span{background:url(../img/controls/icons.png) no-repeat -220px -20px}@-webkit-keyframes opacity{0%{opacity:1}100%{opacity:0}}@-moz-keyframes opacity{0%{opacity:1}100%{opacity:0}}.wysija-button-loading{text-align:center;margin:100px 0 0 0}.wysija-button-loading span{-webkit-animation-name:opacity;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-moz-animation-name:opacity;-moz-animation-duration:1s;-moz-animation-iteration-count:infinite}.wysija-button-loading span:nth-child(2){-webkit-animation-delay:100ms;-moz-animation-delay:100ms}.wysija-button-loading span:nth-child(3){-webkit-animation-delay:300ms;-moz-animation-delay:300ms}.links-page{display:none;margin-left:10px}.new_form{margin:16px 0}.new_form a{font-size:16px !important}
|
css/admin-premium.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#mainmenu .premium{background:url(../img/ui-bg_glass_premium_1x400.png) repeat-x scroll 50% 50% #e6e6e6;border:1px solid #a9abc3}#mainmenu .premium:hover{background:url(../img/ui-bg_glass_premium_hover_1x400.png) repeat-x scroll 50% 50% #e6e6e6;border:1px solid #9c9eb2}#mainmenu .premium a{font-weight:700;color:#5d5e76}#mainmenu .premium a:hover{color:#4b4d69}#mainmenu .ui-state-active{background:white !important;border:1px solid #d8d9e6}.mpoet-page h2{color:#4b4d69;font-size:1.8em;font-weight:200;line-height:1.2em;margin:0}.wysija-premium-wrapper{margin:0 0 20px 0}.wysija-premium-actions{position:fixed;width:1028px;bottom:0;background-color:#eee;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;-webkit-border-top-left-radius:7px;-webkit-border-top-right-radius:7px;-moz-border-radius-topleft:7px;-moz-border-radius-topright:7px;border-top-left-radius:7px;border-top-right-radius:7px;z-index:999;padding:10px 10px 0}.wysija-premium-actions .licence{margin-right:15px}.wysija-premium-actions p{margin:0px 0px 10px 0;text-align:center}.wysija-premium-actions span.conditions{font-size:12px;margin-right:15px}.wysija-premium-actions .button-primary.wysija-premium-activate{float:none}.wysija-premium-actions-kim{position:fixed;width:1066px;bottom:0;background-color:#eee;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;z-index:999;margin-left:-30px;padding:10px 10px;text-align:center}.mpoet-page .feature-section.three-col>div{width:29%}.mpoet-page .three-col img{margin:0.5em 0;max-width:100%}a.wysija-premium-purchase{background-color:#FFB30D !important;background:-webkit-gradient(linear, left top, left bottom, from(#fecb19), to(#ff9c00)) !important;background:-webkit-linear-gradient(#fecb19, #ff9c00) !important;background:-moz-linear-gradient(center top, #fecb19 0%, #ff9c00 100%) !important;background:-moz-gradient(center top, #fecb19 0%, #ff9c00 100%) !important;border:1px solid #ff9c00 !important;color:#ffffff;font-family:"Amaranth", Arial, sans-serif;font-style:italic;font-size:15px !important;font-weight:normal;letter-spacing:1px;text-decoration:none;text-shadow:0 1px 0 #434343;padding:10px 30px;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;box-shadow:none !important;text-shadow:0px 2px 1px rgba(0,0,0,0.3) !important;display:inline-block;text-align:center;width:auto}a.wysija-premium-purchase:hover{box-shadow:none !important}a.wysija-premium-purchase:hover,a.wysija-premium-purchase:active{text-decoration:none !important;background:#ffd547;background:-webkit-gradient(linear, left top, left bottom, from(#ffd648), to(#ffbe38));background:-webkit-linear-gradient(#ffd648, #ffbe38);background:-moz-linear-gradient(center top, #ffd648 20%, #ffbe38 100%);background:-moz-gradient(center top, #ffd648 20%, #ffbe38 100%)}a.wysija-premium-purchase,a.wysija-premium-activate{margin:10px 0}.mpoet-page .bullet-hold{width:600px;margin:15px 30px 15px 5px}.mpoet-page div.description h3{margin:5px 0 4px 0;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:20px;font-weight:normal;color:black}.mpoet-page div.description p{margin:0}#prices_table{margin-top:55px}#prices_table .one-third{display:block;float:left;width:284px}#prices_table #prices_names{height:63px}#prices_table #prices_names .one-third{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:none repeat-x scroll left top rgba(0,0,0,0);border-color:#414141 -moz-use-text-color #414141 #414141;border-image:none;border-style:solid none solid solid;border-width:1px 0 1px 1px;height:61px;text-align:center}#prices_table #prices_names{display:block}#prices_table #prices_names h3{color:#FFF !important;line-height:1em !important}#prices_table #prices_names .blogger{background-color:#0074A2}#prices_table #prices_names .freelance{background-color:#026187}#prices_table #prices_names .agency{background-color:#014661;border-right:1px solid #414141}#prices_table #prices_cost{height:177px}#prices_table #prices_cost p{margin:0}#prices_table #prices_cost .one-third{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;border-color:-moz-use-text-color -moz-use-text-color #849A97 #849A97;border-image:none;border-style:none none solid solid;border-width:0 0 1px 1px;font-family:'Amaranth',Arial,sans-serif;height:176px}#prices_table #prices_cost .agency{border-right:1px solid #849A97}#prices_table #prices_cost span{display:block}#prices_table #prices_cost .dollars{font-size:80px;height:80px;line-height:normal;padding:20px 55px 0;text-align:center}#prices_table #prices_cost .per_year{font-size:18px;padding:0 60px;text-align:right}#prices_table #prices_cost .blogger .dollars{padding:20px 75px 0}#prices_table #prices_cost .blogger .per_year{padding:0 80px}#prices_table #prices_description{height:62px}#prices_table #prices_description .one-third{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;border-color:-moz-use-text-color -moz-use-text-color #849A97 #849A97;border-image:none;border-style:none none solid solid;border-width:0 0 1px 1px;font-size:22px;height:61px}#prices_table #prices_description .agency{border-right:1px solid #849A97}#prices_table #prices_description .agency p{display:block;margin:-15px 62px 0 0;text-align:right;font-size:.5em}#prices_table #prices_description span{display:block;padding:17px 0;text-align:center}#prices_table #prices_content{height:158px}#prices_table #prices_content .prices_content{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;border-color:-moz-use-text-color #849A97 #849A97;border-image:none;border-right:1px solid #849A97;border-style:none solid solid;border-width:0 1px 1px;color:#414141;font-size:17px;padding:16px 0}#prices_table #prices_content .prices_content span{display:block;padding:2px 0;text-align:center}a.buy-button{background:none repeat scroll 0 0 #2EA2CC;border-color:#0074A2;box-shadow:0 1px 0 rgba(120,200,230,0.5) inset,0 1px 0 rgba(0,0,0,0.15);color:#FFFFFF;-moz-box-sizing:border-box;border-radius:3px;border-style:solid;border-width:1px;cursor:pointer;display:inline-block;font-size:20px;margin-top:20px;margin-bottom:60px;padding:7px 10px 7px;text-decoration:none;white-space:nowrap}a.buy-button:hover{color:#ecf3fe}.mpoet-page h1{font-size:34px}#wysija-app .mpoet-page h2{font-size:25px}.mpoet-page h1,.mpoet-page h2,.mpoet-page h3,.mpoet-page h4{color:#626262;font-weight:bold}.mpoet-page h3{margin-top:5px;line-height:24px}.mpoet-page .three-col .argument-cta{display:table;margin-top:5px}#premium-content-b .pick-licence{margin-bottom:15px}.mpoet-page hr{margin-bottom:20px}#premium-content-b .price{font-weight:bold}#footer-upgrade,#footer-left,#wpfooter .alignright,.wysija-footer{display:none}.about-wrap div.updated,.about-wrap div.error{display:block !important}
|
1 |
+
#mainmenu .premium{background:url(../img/ui-bg_glass_premium_1x400.png) repeat-x scroll 50% 50% #e6e6e6;border:1px solid #a9abc3}#mainmenu .premium:hover{background:url(../img/ui-bg_glass_premium_hover_1x400.png) repeat-x scroll 50% 50% #e6e6e6;border:1px solid #9c9eb2}#mainmenu .premium a{font-weight:700;color:#5d5e76}#mainmenu .premium a:hover{color:#4b4d69}#mainmenu .ui-state-active{background:white !important;border:1px solid #d8d9e6}.mpoet-page h2{color:#4b4d69;font-family:sans-serif;font-size:1.8em;font-weight:200;line-height:1.2em;margin:0}.wysija-premium-wrapper{margin:0 0 20px 0}.wysija-premium-actions{position:fixed;width:1028px;bottom:0;background-color:#eee;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;-webkit-border-top-left-radius:7px;-webkit-border-top-right-radius:7px;-moz-border-radius-topleft:7px;-moz-border-radius-topright:7px;border-top-left-radius:7px;border-top-right-radius:7px;z-index:999;padding:10px 10px 0}.wysija-premium-actions .licence{margin-right:15px}.wysija-premium-actions p{margin:0px 0px 10px 0;text-align:center}.wysija-premium-actions span.conditions{font-size:12px;margin-right:15px}.wysija-premium-actions .button-primary.wysija-premium-activate{float:none}.wysija-premium-actions-kim{position:fixed;width:1066px;bottom:0;background-color:#eee;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;z-index:999;margin-left:-30px;padding:10px 10px;text-align:center}.mpoet-page .feature-section.three-col>div{width:29%}.mpoet-page .three-col img{margin:0.5em 0;max-width:100%}a.wysija-premium-purchase{background-color:#FFB30D !important;background:-webkit-gradient(linear, left top, left bottom, from(#fecb19), to(#ff9c00)) !important;background:-webkit-linear-gradient(#fecb19, #ff9c00) !important;background:-moz-linear-gradient(center top, #fecb19 0%, #ff9c00 100%) !important;background:-moz-gradient(center top, #fecb19 0%, #ff9c00 100%) !important;border:1px solid #ff9c00 !important;color:#ffffff;font-family:"Amaranth", Arial, sans-serif;font-style:italic;font-size:15px !important;font-weight:normal;letter-spacing:1px;text-decoration:none;text-shadow:0 1px 0 #434343;padding:10px 30px;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;box-shadow:none !important;text-shadow:0px 2px 1px rgba(0,0,0,0.3) !important;display:inline-block;text-align:center;width:auto}a.wysija-premium-purchase:hover{box-shadow:none !important}a.wysija-premium-purchase:hover,a.wysija-premium-purchase:active{text-decoration:none !important;background:#ffd547;background:-webkit-gradient(linear, left top, left bottom, from(#ffd648), to(#ffbe38));background:-webkit-linear-gradient(#ffd648, #ffbe38);background:-moz-linear-gradient(center top, #ffd648 20%, #ffbe38 100%);background:-moz-gradient(center top, #ffd648 20%, #ffbe38 100%)}a.wysija-premium-purchase,a.wysija-premium-activate{margin:10px 0}.mpoet-page .bullet-hold{width:600px;margin:15px 30px 15px 5px}.mpoet-page div.description h3{margin:5px 0 4px 0;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:20px;font-weight:normal;color:black}.mpoet-page div.description p{margin:0}#prices_table{margin-top:55px}#prices_table .one-third{display:block;float:left;width:284px}#prices_table #prices_names{height:63px}#prices_table #prices_names .one-third{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:none repeat-x scroll left top rgba(0,0,0,0);border-color:#414141 -moz-use-text-color #414141 #414141;border-image:none;border-style:solid none solid solid;border-width:1px 0 1px 1px;height:61px;text-align:center}#prices_table #prices_names{display:block}#prices_table #prices_names h3{color:#FFF !important;line-height:1em !important}#prices_table #prices_names .blogger{background-color:#0074A2}#prices_table #prices_names .freelance{background-color:#026187}#prices_table #prices_names .agency{background-color:#014661;border-right:1px solid #414141}#prices_table #prices_cost{height:177px}#prices_table #prices_cost p{margin:0}#prices_table #prices_cost .one-third{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;border-color:-moz-use-text-color -moz-use-text-color #849A97 #849A97;border-image:none;border-style:none none solid solid;border-width:0 0 1px 1px;font-family:'Amaranth',Arial,sans-serif;height:176px}#prices_table #prices_cost .agency{border-right:1px solid #849A97}#prices_table #prices_cost span{display:block}#prices_table #prices_cost .dollars{font-size:80px;height:80px;line-height:normal;padding:20px 55px 0;text-align:center}#prices_table #prices_cost .per_year{font-size:18px;padding:0 60px;text-align:right}#prices_table #prices_cost .blogger .dollars{padding:20px 75px 0}#prices_table #prices_cost .blogger .per_year{padding:0 80px}#prices_table #prices_description{height:62px}#prices_table #prices_description .one-third{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;border-color:-moz-use-text-color -moz-use-text-color #849A97 #849A97;border-image:none;border-style:none none solid solid;border-width:0 0 1px 1px;font-size:22px;height:61px}#prices_table #prices_description .agency{border-right:1px solid #849A97}#prices_table #prices_description .agency p{display:block;margin:-15px 62px 0 0;text-align:right;font-size:.5em}#prices_table #prices_description span{display:block;padding:17px 0;text-align:center}#prices_table #prices_content{height:158px}#prices_table #prices_content .prices_content{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;border-color:-moz-use-text-color #849A97 #849A97;border-image:none;border-right:1px solid #849A97;border-style:none solid solid;border-width:0 1px 1px;color:#414141;font-size:17px;padding:16px 0}#prices_table #prices_content .prices_content span{display:block;padding:2px 0;text-align:center}a.buy-button{background:none repeat scroll 0 0 #2EA2CC;border-color:#0074A2;box-shadow:0 1px 0 rgba(120,200,230,0.5) inset,0 1px 0 rgba(0,0,0,0.15);color:#FFFFFF;-moz-box-sizing:border-box;border-radius:3px;border-style:solid;border-width:1px;cursor:pointer;display:inline-block;font-size:20px;margin-top:20px;margin-bottom:60px;padding:7px 10px 7px;text-decoration:none;white-space:nowrap}a.buy-button:hover{color:#ecf3fe}.mpoet-page h1{font-size:34px}#wysija-app .mpoet-page h2{font-size:25px}.mpoet-page h1,.mpoet-page h2,.mpoet-page h3,.mpoet-page h4{color:#626262;font-family:"Arial","Open Sans",sans-serif;font-weight:bold}.mpoet-page h3{margin-top:5px;line-height:24px}.mpoet-page .three-col .argument-cta{display:table;margin-top:5px}#premium-content-b .pick-licence{margin-bottom:15px}.mpoet-page hr{margin-bottom:20px}#premium-content-b .price{font-weight:bold}#footer-upgrade,#footer-left,#wpfooter .alignright,.wysija-footer{display:none}.about-wrap div.updated,.about-wrap div.error{display:block !important}
|
css/admin-statistics.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.stats_date_filter{padding-top:10px}.statistic-title{clear:both;margin-top:5px}.cl{clear:both}#hook_stats .container{clear:both;padding-top:1px;margin-top:20px}#stats-filter .reset{background:none;border:none;cursor:pointer}#stats-filter .reset:hover{text-decoration:underline}.custom_date{margin-right:10px}.spinner{float:left !important}.hook{margin-top:10px;clear:both}.container-top-links .link_column{width:20%}.container-top-links .click_column{width:6%}.container .check-column{width:2.5em}.container-top-subscribers table th.subscriber{width:30%}.container-top-subscribers table th.clicks{width:7%}.container-top-subscribers table th.opens{width:7%}.container-top-subscribers table th.lists{width:41%}.container-top-subscribers table th.date{width:15%}.container-top-links a.newsletter{display:block;padding-top:5px}.container-top-newsletters th.newsletter{width:19%}.container-top-newsletters th.sent{width:8%}.container-top-newsletters th.opens{width:8%}.container-top-newsletters th.clicks{width:7%}.container-top-newsletters th.unsubscribes{width:11%}.container-top-newsletters th.rates{width:18%}.container-top-newsletters th.sent_at{width:12%}.container-top-newsletters th.lists{width:14%}.container-top-newsletters td a.stats{display:none}.container-top-newsletters td.newsletter:hover a.stats{display:block}.container-top-subscribers th.desc:hover span.sorting-indicator,.container-top-newsletters th.desc:hover span.sorting-indicator{background-position:-7px 0}.stats_feedback{font-weight:bold;margin-top:20px;clear:both}.tip{font-style:italic}.stats_subscriptions-container .tip{margin-left:70px}
|
1 |
+
.stats_date_filter{padding-top:10px}.statistic-title{clear:both;margin-top:5px}.cl{clear:both}#hook_stats .container{clear:both;padding-top:1px;margin-top:20px}#stats-filter .reset{background:none;border:none;cursor:pointer}#stats-filter .reset:hover{text-decoration:underline}.custom_date{margin-right:10px}.spinner{float:left !important}.hook{margin-top:10px;clear:both}.container-top-links .link_column{width:20%}.container-top-links .click_column{width:6%}.container .check-column{width:2.5em}.container-top-subscribers table th.subscriber{width:30%}.container-top-subscribers table th.clicks{width:7%}.container-top-subscribers table th.opens{width:7%}.container-top-subscribers table th.lists{width:41%}.container-top-subscribers table th.date{width:15%}.container-top-links a.newsletter{display:block;padding-top:5px}.container-top-newsletters th.newsletter{width:19%}.container-top-newsletters th.sent{width:8%}.container-top-newsletters th.opens{width:8%}.container-top-newsletters th.clicks{width:7%}.container-top-newsletters th.unsubscribes{width:11%}.container-top-newsletters th.rates{width:18%}.container-top-newsletters th.sent_at{width:12%}.container-top-newsletters th.lists{width:14%}.container-top-newsletters td a.stats{display:none}.container-top-newsletters td.newsletter:hover a.stats{display:block}.container-top-subscribers th.desc:hover span.sorting-indicator,.container-top-newsletters th.desc:hover span.sorting-indicator{background-position:-7px 0}.stats_feedback{font-weight:bold;margin-top:20px;clear:both}.tip{font-style:italic}.stats_subscriptions-container .tip{margin-left:70px}
|
css/admin.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-table}* html .clearfix{height:1%}.clearfix{display:block}#wysija-app .column-date{width:125px}#wysija-app .column-clic,#wysija-app .column-opened,#wysija-app .column-emails{width:80px}#wysija-app .column-list-names{width:120px}#wysija-app .menuslinks{margin:20px 0}#statscontainer{height:200px;width:400px}#wysistats1{width:400px}#wysistats1 h3{text-align:center}#wysistats2,#wysistats3{width:200px;padding:30px 0 0 20px}#wysistats3{height:200px;overflow:auto}#wysistats2 ul li,#wysistats .title{font-weight:bold;font-size:14px;margin-top:0}#wysistats3 ol li{font-style:italic;font-size:10px;color:#444}#wysistats3 ol li em{font-size:11px;font-weight:bold}th.sorted,th.sortable{cursor:pointer}div#wysija-app .xdetailed-updated li,div#wysija-app .xdetailed-errors li,div#wysija-app .updated li,div#wysija-app .error li{margin:6px 0}.xdetailed-errors,.xdetailed-updated{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 0.6em}.xdetailed-updated{background-color:#FFFFE0;border-color:#E6DB55;color:#000;display:none}.xdetailed-errors{background-color:#FFEBE8;border-color:#888888;color:#000;display:none}label input[type="checkbox"],label input[type="radio"]{margin:0 5px 0 15px}label:first-child input[type="checkbox"],label:first-child input[type="radio"]{margin-left:0}label.title{font-weight:bold;font-size:14px}.wrap .button-secondary2{background-color:#6697BF;font-family:sans-serif;font-size:12px;color:#FFFFFF;text-decoration:none;text-shadow:0 1px 0 #777777;box-shadow:1px 1px 0 #AAAAAA;margin-left:4px;padding:3px 8px;position:relative;top:-3px;border-radius:3px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px}.wrap .button-secondary2:hover,.wrap .wcurrent{background-color:#1C73B5}.wrap #theme-view .button-secondary2{top:2px}.dots{margin:0 4px}#wysija-pagination{text-align:center}.tablenav .tablenav-pages a,.tablenav-pages span.current{margin:0 2px}.total-pages{padding:0px 3px}input.searchbox{width:225px}.wysija-premium img{display:none}#TB_load,#TB_window,#TB_overlay,.ui-dialog{z-index:100000 !important}.ui-widget-overlay{z-index:9998 !important;background-image:none !important}p.label{font-size:13px}.wysija_popup_content{padding:10px 20px 0 20px}.wysija_popup_content h3{margin:0 0 20px 0}a.linkignore{color:#BC0B0B}a.linkignore:hover,a.submitsynch:hover{color:#FF0000}a.submitsynch{color:#52aa05}body{min-width:0 !important}.warning-msg{background-color:#FFFFE0;border-color:#E6DB55}.warning-msg{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 0.6em}.warning-msg ul{margin:0}span.warning-msg{padding:7px}.about-wrap h3{padding-top:0px}.about-text{margin-bottom:1em;margin-top:0;min-height:20px}.wysija-unsubscribed-on{color:#bbb}.clear_select_all,.force_to_select_all_link{text-align:center}.batch-select{background-color:#E0E0E0;color:#555555;border-bottom:1px solid #e5e5e5}.clear_select_all a:hover,.force_to_select_all_link a:hover{text-decoration:underline;cursor:pointer !important}#wysija-app .notice-msg{background-color:#FFFFE0;border-color:#E6DB55}#wysija-app .error-msg{background-color:#FFEBE8;border-color:#CC0000}#wysija-app .wysija-msg .notice-msg,#wysija-app .wysija-msg .error-msg{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 0 15px;padding:0 0.6em}
|
1 |
+
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-table}* html .clearfix{height:1%}.clearfix{display:block}#wysija-app .column-date{width:125px}#wysija-app .column-clic,#wysija-app .column-opened,#wysija-app .column-emails{width:80px}#wysija-app .column-list-names{width:120px}#wysija-app .menuslinks{margin:20px 0}#statscontainer{height:200px;width:400px}#wysistats1{width:400px}#wysistats1 h3{text-align:center}#wysistats2,#wysistats3{width:200px;padding:30px 0 0 20px}#wysistats3{height:200px;overflow:auto}.left{float:left}.right{float:right}#wysistats2 ul li,#wysistats .title{font-weight:bold;font-size:14px;margin-top:0}#wysistats3 ol li{font-style:italic;font-size:10px;color:#444}#wysistats3 ol li em{font-size:11px;font-weight:bold}th.sorted,th.sortable{cursor:pointer}div#wysija-app .xdetailed-updated li,div#wysija-app .xdetailed-errors li,div#wysija-app .updated li,div#wysija-app .error li{margin:6px 0}.xdetailed-errors,.xdetailed-updated{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 0.6em}.xdetailed-updated{background-color:#FFFFE0;border-color:#E6DB55;color:#000;display:none}.xdetailed-errors{background-color:#FFEBE8;border-color:#888888;color:#000;display:none}label input[type="checkbox"],label input[type="radio"]{margin:0 5px 0 15px}label:first-child input[type="checkbox"],label:first-child input[type="radio"]{margin-left:0}label.title{font-weight:bold;font-size:14px}.wrap .button-secondary2{background-color:#6697BF;font-family:sans-serif;font-size:12px;color:#FFFFFF;text-decoration:none;text-shadow:0 1px 0 #777777;box-shadow:1px 1px 0 #AAAAAA;margin-left:4px;padding:3px 8px;position:relative;top:-3px;border-radius:3px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px}.wrap .button-secondary2:hover,.wrap .wcurrent{background-color:#1C73B5}.wrap #theme-view .button-secondary2{top:2px}.dots{margin:0 4px}#wysija-pagination{text-align:center}.tablenav .tablenav-pages a,.tablenav-pages span.current{margin:0 2px}.total-pages{padding:0px 3px}input.searchbox{width:225px}.wysija-premium img{display:none}#TB_load,#TB_window,#TB_overlay,.ui-dialog{z-index:100000 !important}.ui-widget-overlay{z-index:9998 !important;background-image:none !important}p.label{font-size:13px}.wysija_popup_content{padding:10px 20px 0 20px}.wysija_popup_content h3{margin:0 0 20px 0}a.linkignore{color:#BC0B0B}a.linkignore:hover,a.submitsynch:hover{color:#FF0000}a.submitsynch{color:#52aa05}body{min-width:0 !important}.warning-msg{background-color:#FFFFE0;border-color:#E6DB55}.warning-msg{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 15px 2px;padding:0 0.6em}.warning-msg ul{margin:0}span.warning-msg{padding:7px}.about-wrap h3{padding-top:0px}.about-text{margin-bottom:1em;margin-top:0;min-height:20px}.wysija-unsubscribed-on{color:#bbb}.clear_select_all,.force_to_select_all_link{text-align:center}.batch-select{background-color:#E0E0E0;color:#555555;border-bottom:1px solid #e5e5e5}.clear_select_all a:hover,.force_to_select_all_link a:hover{text-decoration:underline;cursor:pointer !important}#wysija-app .notice-msg{background-color:#FFFFE0;border-color:#E6DB55}#wysija-app .error-msg{background-color:#FFEBE8;border-color:#CC0000}#wysija-app .wysija-msg .notice-msg,#wysija-app .wysija-msg .error-msg{border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;margin:5px 0 15px;padding:0 0.6em}
|
css/adminPopup.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
html{overflow:hidden;overflow-y:auto;height:auto !important}html.wp-toolbar{padding:0 !important}#wpadminbar{display:none}body{-webkit-backface-visibility:hidden}.popup_content{margin:10px 10px 0 10px}.popup_content.addlink{width:300px}.popup_content.articles{width:700px}.popup_content.dividers{width:620px}.popup_content.autopost{width:700px
|
1 |
+
html{overflow:hidden;overflow-y:auto;height:auto !important}html.wp-toolbar{padding:0 !important}#wpadminbar{display:none}body{-webkit-backface-visibility:hidden}.popup_content{margin:10px 10px 0 10px}.popup_content.addlink{width:300px}.popup_content.articles{width:700px}.popup_content.dividers{width:620px}.popup_content.autopost{width:700px}.popup_content.themes{width:800px}.popup_content.bookmarks{width:620px}.popup_content.media-browse,.popup_content.media-wp-browse,.popup_content.media-wp-upload{width:715px}.popup_content.form_widget_settings{width:405px}.popup_content.widget_text,.popup_content.widget_html{width:450px}.popup_content.widget_list{width:450px}p.align-right{text-align:right;margin-bottom:0 !important}div.updated,div.error{margin:10px !important}.popup_content.inline_form label{line-height:2em;font-weight:bold}.popup_content.inline_form p input,.popup_content.inline_form p select,.popup_content.inline_form p .group{float:left;width:200px}.submit_button{text-align:right;margin:20px 10px 20px 0}.popup_content.inline_form .submit_button{margin:20px 4px 0 0}.popup_content.inline_form p input[type="submit"],.popup_content.inline_form .group label,.popup_content.inline_form .group input,.popup_content.inline_form .group select{float:none;clear:none;width:auto}.popup_content.inline_form label.radio,.popup_content.inline_form .group label{font-weight:normal}.popup_content.inline_form input[type="radio"],.popup_content.inline_form input[type="checkbox"]{width:16px;height:16px;margin:0 3px 0 0;padding:0}.popup_content.inline_form input[type="radio"]{-webkit-appearance:radio}.popup_content.inline_form input[type="radio"]:checked:before,.popup_content.inline_form input[type="checkbox"]:checked:before{background:none;content:''}.popup_content.inline_form input[type="checkbox"]{-webkit-appearance:checkbox}.popup_content.inline_form textarea,.popup_content.inline_form input[type="text"],.popup_content.inline_form input[type="password"],.popup_content.inline_form input[type="email"],.popup_content.inline_form input[type="number"],.popup_content.inline_form input[type="search"],.popup_content.inline_form input[type="tel"],.popup_content.inline_form input[type="url"],.popup_content.inline_form select{font-size:13px;line-height:15px;padding:3px 5px}
|
css/qtip2/jquery.qtip.min.css
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
/* qTip2 v2.2.0 basic css3 | qtip2.com | Licensed MIT, GPL | Fri Nov 29 2013 13:08:37 */
|
2 |
+
.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111} .qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1} .qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030} .qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0} .qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon{border-color:#D95252}.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252} .qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0} .qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important}
|
css/tmce/editor.css
DELETED
@@ -1,2317 +0,0 @@
|
|
1 |
-
|
2 |
-
/*------------------------------------------------------------------------------
|
3 |
-
|
4 |
-
TinyMCE and Quicklinks toolbars
|
5 |
-
------------------------------------------------------------------------------*/
|
6 |
-
|
7 |
-
/* wp_theme/ui.css */
|
8 |
-
.wp_themeSkin table,
|
9 |
-
.wp_themeSkin tbody,
|
10 |
-
.wp_themeSkin a,
|
11 |
-
.wp_themeSkin img,
|
12 |
-
.wp_themeSkin tr,
|
13 |
-
.wp_themeSkin div,
|
14 |
-
.wp_themeSkin td,
|
15 |
-
.wp_themeSkin iframe,
|
16 |
-
.wp_themeSkin span,
|
17 |
-
.wp_themeSkin *,
|
18 |
-
.wp_themeSkin .mceText {
|
19 |
-
border: 0;
|
20 |
-
margin: 0;
|
21 |
-
padding: 0;
|
22 |
-
white-space: nowrap;
|
23 |
-
text-decoration: none;
|
24 |
-
font-weight: normal;
|
25 |
-
cursor: default;
|
26 |
-
vertical-align: baseline;
|
27 |
-
width: auto;
|
28 |
-
border-collapse: separate;
|
29 |
-
}
|
30 |
-
|
31 |
-
.wp_themeSkin a:hover,
|
32 |
-
.wp_themeSkin a:link,
|
33 |
-
.wp_themeSkin a:visited,
|
34 |
-
.wp_themeSkin a:active {
|
35 |
-
text-decoration: none;
|
36 |
-
font-weight: normal;
|
37 |
-
cursor: default;
|
38 |
-
}
|
39 |
-
|
40 |
-
.wp_themeSkin table td {
|
41 |
-
vertical-align: middle;
|
42 |
-
}
|
43 |
-
|
44 |
-
.wp_themeSkin *,
|
45 |
-
.wp_themeSkin a:hover,
|
46 |
-
.wp_themeSkin a:link,
|
47 |
-
.wp_themeSkin a:visited,
|
48 |
-
.wp_themeSkin a:active {
|
49 |
-
color: #555;
|
50 |
-
}
|
51 |
-
|
52 |
-
/* These are part of TinyMCE, used in TinyMCE Advanced, but not WordPress. These are not updated for 3.8's design. */
|
53 |
-
.wp_themeSkin span.mce_sup,
|
54 |
-
.wp_themeSkin span.mce_sub,
|
55 |
-
.wp_themeSkin span.mce_media,
|
56 |
-
.wp_themeSkin span.mce_styleprops,
|
57 |
-
.wp_themeSkin span.mce_search,
|
58 |
-
.wp_themeSkin span.mce_emotions,
|
59 |
-
.wp_themeSkin span.mce_print,
|
60 |
-
.wp_themeSkin span.mce_attribs,
|
61 |
-
.wp_themeSkin span.mce_hr,
|
62 |
-
.wp_themeSkin span.mce_cut,
|
63 |
-
.wp_themeSkin span.mce_copy,
|
64 |
-
.wp_themeSkin span.mce_paste,
|
65 |
-
.wp_themeSkin span.mce_cite,
|
66 |
-
.wp_themeSkin span.mce_visualchars,
|
67 |
-
.wp_themeSkin span.mce_advhr,
|
68 |
-
.wp_themeSkin span.mce_insertdate,
|
69 |
-
.wp_themeSkin span.mce_anchor,
|
70 |
-
.wp_themeSkin span.mce_visualaid,
|
71 |
-
.wp_themeSkin span.mce_cleanup,
|
72 |
-
.wp_themeSkin span.mce_table,
|
73 |
-
.wp_themeSkin span.mce_row_props,
|
74 |
-
.wp_themeSkin span.mce_cell_props,
|
75 |
-
.wp_themeSkin span.mce_row_before,
|
76 |
-
.wp_themeSkin span.mce_row_after,
|
77 |
-
.wp_themeSkin span.mce_delete_row,
|
78 |
-
.wp_themeSkin span.mce_col_before,
|
79 |
-
.wp_themeSkin span.mce_col_after,
|
80 |
-
.wp_themeSkin span.mce_delete_col,
|
81 |
-
.wp_themeSkin span.mce_split_cells,
|
82 |
-
.wp_themeSkin span.mce_merge_cells,
|
83 |
-
.wp_themeSkin span.mce_delete_table,
|
84 |
-
.wp_themeSkin span.mce_ins,
|
85 |
-
.wp_themeSkin span.mce_abbr,
|
86 |
-
.wp_themeSkin span.mce_acronym,
|
87 |
-
.wp_themeSkin span.mce_del,
|
88 |
-
.wp_themeSkin span.mce_replace,
|
89 |
-
.wp_themeSkin span.mce_code,
|
90 |
-
.wp_themeSkin span.mce_nonbreaking,
|
91 |
-
.wp_themeSkin span.mce_inserttime,
|
92 |
-
.wp_themeSkin span.mce_insertlayer,
|
93 |
-
.wp_themeSkin span.mce_moveforward,
|
94 |
-
.wp_themeSkin span.mce_movebackward,
|
95 |
-
.wp_themeSkin span.mce_absolute {
|
96 |
-
-moz-transition: none;
|
97 |
-
-webkit-transition: none;
|
98 |
-
transition: none;
|
99 |
-
background: url("../js/tinymce/skins/wordpress/images/icons.gif") no-repeat 20px 20px;
|
100 |
-
}
|
101 |
-
|
102 |
-
.wp_themeSkin span.mce_code:after {
|
103 |
-
content: '\f475';
|
104 |
-
font-family: 'dashicons';
|
105 |
-
}
|
106 |
-
|
107 |
-
/* No @font-face support */
|
108 |
-
.no-font-face .wp_themeSkin span.mce_undo,
|
109 |
-
.no-font-face .wp_themeSkin span.mce_redo,
|
110 |
-
.no-font-face .wp_themeSkin span.mce_bullist,
|
111 |
-
.no-font-face .wp_themeSkin span.mce_numlist,
|
112 |
-
.no-font-face .wp_themeSkin span.mce_blockquote,
|
113 |
-
.no-font-face .wp_themeSkin span.mce_charmap,
|
114 |
-
.no-font-face .wp_themeSkin span.mce_bold,
|
115 |
-
.no-font-face .wp_themeSkin span.mce_italic,
|
116 |
-
.no-font-face .wp_themeSkin span.mce_underline,
|
117 |
-
.no-font-face .wp_themeSkin span.mce_justifyleft,
|
118 |
-
.no-font-face .wp_themeSkin span.mce_justifyright,
|
119 |
-
.no-font-face .wp_themeSkin span.mce_justifycenter,
|
120 |
-
.no-font-face .wp_themeSkin span.mce_justifyfull,
|
121 |
-
.no-font-face .wp_themeSkin span.mce_indent,
|
122 |
-
.no-font-face .wp_themeSkin span.mce_outdent,
|
123 |
-
.no-font-face .wp_themeSkin span.mce_link,
|
124 |
-
.no-font-face .wp_themeSkin span.mce_unlink,
|
125 |
-
.no-font-face .wp_themeSkin span.mce_help,
|
126 |
-
.no-font-face .wp_themeSkin span.mce_removeformat,
|
127 |
-
.no-font-face .wp_themeSkin span.mce_fullscreen,
|
128 |
-
.no-font-face .wp_themeSkin span.mce_wp_fullscreen,
|
129 |
-
.no-font-face .wp_themeSkin span.mce_media,
|
130 |
-
.no-font-face .wp_themeSkin span.mce_pastetext,
|
131 |
-
.no-font-face .wp_themeSkin span.mce_pasteword,
|
132 |
-
.no-font-face .wp_themeSkin span.mce_wp_help,
|
133 |
-
.no-font-face .wp_themeSkin span.mce_wp_adv,
|
134 |
-
.no-font-face .wp_themeSkin span.mce_wp_more,
|
135 |
-
.no-font-face .wp_themeSkin span.mce_strikethrough,
|
136 |
-
.no-font-face .wp_themeSkin span.mce_spellchecker,
|
137 |
-
.no-font-face .wp_themeSkin span.mce_forecolor,
|
138 |
-
.no-font-face .wp_themeSkin .mce_forecolorpicker,
|
139 |
-
.no-font-face .wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,
|
140 |
-
.no-font-face .wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,
|
141 |
-
.no-font-face .wp_themeSkin .mceSplitButton span.mce_numlist,
|
142 |
-
.no-font-face .wp_themeSkin .mceSplitButton span.mce_bullist {
|
143 |
-
-moz-transition: none;
|
144 |
-
-webkit-transition: none;
|
145 |
-
transition: none;
|
146 |
-
background-image: url('../images/wpicons.png?ver=20120720');
|
147 |
-
}
|
148 |
-
|
149 |
-
/* Theme */
|
150 |
-
.no-font-face .wp_themeSkin span.mce_undo {background-position:-500px -20px}
|
151 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_undo,
|
152 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_undo {background-position:-500px 0}
|
153 |
-
|
154 |
-
.no-font-face .wp_themeSkin span.mce_redo {background-position:-480px -20px}
|
155 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_redo,
|
156 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_redo {background-position:-480px 0}
|
157 |
-
|
158 |
-
.no-font-face .wp_themeSkin span.mce_bullist {background-position:-40px -20px}
|
159 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,
|
160 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_bullist,
|
161 |
-
.no-font-face .wp_themeSkin .mceSplitButton:hover span.mce_bullist {background-position:-40px 0}
|
162 |
-
|
163 |
-
.no-font-face .wp_themeSkin span.mce_numlist {background-position:-60px -20px}
|
164 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,
|
165 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_numlist,
|
166 |
-
.no-font-face .wp_themeSkin .mceSplitButton:hover span.mce_numlist {background-position:-60px 0}
|
167 |
-
|
168 |
-
.no-font-face .wp_themeSkin span.mce_blockquote {background-position:-80px -20px}
|
169 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,
|
170 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_blockquote {background-position:-80px 0}
|
171 |
-
|
172 |
-
.no-font-face .wp_themeSkin span.mce_charmap {background-position:-420px -20px}
|
173 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,
|
174 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_charmap {background-position:-420px 0}
|
175 |
-
|
176 |
-
.no-font-face .wp_themeSkin span.mce_bold {background-position:0 -20px}
|
177 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_bold,
|
178 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_bold {background-position:0 0}
|
179 |
-
|
180 |
-
.no-font-face .wp_themeSkin span.mce_italic {background-position:-20px -20px}
|
181 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_italic,
|
182 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_italic {background-position:-20px 0}
|
183 |
-
|
184 |
-
.no-font-face .wp_themeSkin span.mce_underline {background-position:-280px -20px}
|
185 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_underline,
|
186 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_underline {background-position:-280px 0}
|
187 |
-
|
188 |
-
.no-font-face .wp_themeSkin span.mce_justifyleft {background-position:-100px -20px}
|
189 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,
|
190 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_justifyleft {background-position:-100px 0}
|
191 |
-
|
192 |
-
.no-font-face .wp_themeSkin span.mce_justifyright {background-position:-140px -20px}
|
193 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,
|
194 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_justifyright {background-position:-140px 0}
|
195 |
-
|
196 |
-
.no-font-face .wp_themeSkin span.mce_justifycenter {background-position:-120px -20px}
|
197 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,
|
198 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_justifycenter {background-position:-120px 0}
|
199 |
-
|
200 |
-
.no-font-face .wp_themeSkin span.mce_justifyfull {background-position:-300px -20px}
|
201 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,
|
202 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_justifyfull {background-position:-300px 0}
|
203 |
-
|
204 |
-
.no-font-face .wp_themeSkin span.mce_indent {background-position:-460px -20px}
|
205 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_indent,
|
206 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_indent {background-position:-460px 0}
|
207 |
-
|
208 |
-
.no-font-face .wp_themeSkin span.mce_outdent {background-position:-440px -20px}
|
209 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,
|
210 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_outdent {background-position:-440px 0}
|
211 |
-
|
212 |
-
.no-font-face .wp_themeSkin span.mce_link {background-position:-160px -20px}
|
213 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_link,
|
214 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_link {background-position:-160px 0}
|
215 |
-
|
216 |
-
.no-font-face .wp_themeSkin span.mce_unlink {background-position:-180px -20px}
|
217 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,
|
218 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_unlink {background-position:-180px 0}
|
219 |
-
|
220 |
-
.no-font-face .wp_themeSkin span.mce_help {background-position:-520px -20px}
|
221 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_help,
|
222 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_help {background-position:-520px 0}
|
223 |
-
|
224 |
-
.no-font-face .wp_themeSkin span.mce_removeformat {background-position:-380px -20px}
|
225 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,
|
226 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_removeformat {background-position:-380px 0}
|
227 |
-
|
228 |
-
.no-font-face .wp_themeSkin span.mce_strikethrough {background-position:-540px -20px;}
|
229 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,
|
230 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_strikethrough {background-position:-540px 0}
|
231 |
-
|
232 |
-
.no-font-face .wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor {background-position:-320px -20px}
|
233 |
-
.no-font-face .wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,
|
234 |
-
.no-font-face .wp_themeSkin .mceSplitButtonSelected span.mce_forecolor {background-position:-320px 0}
|
235 |
-
|
236 |
-
.no-font-face .wp_themeSkin .mce_forecolorpicker {background-position:-320px -20px}
|
237 |
-
|
238 |
-
/* Plugins in WP */
|
239 |
-
.no-font-face .wp_themeSkin span.mce_fullscreen {background-position:-240px -20px}
|
240 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,
|
241 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_fullscreen {background-position:-240px 0}
|
242 |
-
|
243 |
-
.no-font-face .wp_themeSkin span.mce_wp_fullscreen {background-position:-240px -20px}
|
244 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,
|
245 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_wp_fullscreen {background-position:-240px 0}
|
246 |
-
|
247 |
-
.no-font-face .wp_themeSkin span.mce_media {background-position:-400px -20px}
|
248 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_media,
|
249 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_media {background-position:-400px 0}
|
250 |
-
|
251 |
-
.no-font-face .wp_themeSkin span.mce_pastetext {background-position:-340px -20px}
|
252 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,
|
253 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_pastetext {background-position:-340px 0}
|
254 |
-
|
255 |
-
.no-font-face .wp_themeSkin span.mce_pasteword {background-position:-360px -20px}
|
256 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,
|
257 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_pasteword {background-position:-360px 0}
|
258 |
-
|
259 |
-
.no-font-face .wp_themeSkin span.mce_spellchecker {background-position:-220px -20px}
|
260 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,
|
261 |
-
.no-font-face .wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,
|
262 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_spellchecker,
|
263 |
-
.no-font-face .wp_themeSkin .mceSplitButtonSelected span.mce_spellchecker {background-position:-220px 0}
|
264 |
-
|
265 |
-
.no-font-face .wp_themeSkin span.mce_wp_help {background-position:-520px -20px}
|
266 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,
|
267 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_wp_help {background-position:-520px 0}
|
268 |
-
|
269 |
-
.no-font-face .wp_themeSkin span.mce_wp_adv {background-position:-260px -20px}
|
270 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,
|
271 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_wp_adv {background-position:-260px 0}
|
272 |
-
|
273 |
-
.no-font-face .wp_themeSkin span.mce_wp_more {background-position:-200px -20px}
|
274 |
-
.no-font-face .wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,
|
275 |
-
.no-font-face .wp_themeSkin .mceButtonActive span.mce_wp_more {background-position:-200px 0}
|
276 |
-
|
277 |
-
.no-font-face .mceIcon:before {
|
278 |
-
display: none !important;
|
279 |
-
}
|
280 |
-
/* End no @font-face */
|
281 |
-
|
282 |
-
/* Containers */
|
283 |
-
.wp_themeSkin table {}
|
284 |
-
|
285 |
-
.wp_themeSkin iframe {
|
286 |
-
display: block;
|
287 |
-
}
|
288 |
-
|
289 |
-
.wp_themeSkin #mce_fullscreen_ifr {
|
290 |
-
background-color: #fff;
|
291 |
-
}
|
292 |
-
|
293 |
-
.wp_themeSkin .mceToolbar {
|
294 |
-
padding: 1px;
|
295 |
-
}
|
296 |
-
|
297 |
-
/* External */
|
298 |
-
.wp_themeSkin .mceExternalToolbar {
|
299 |
-
position: absolute;
|
300 |
-
border-bottom: 0;
|
301 |
-
display: none;
|
302 |
-
}
|
303 |
-
|
304 |
-
.wp_themeSkin .mceExternalToolbar td.mceToolbar {
|
305 |
-
padding-right: 13px;
|
306 |
-
}
|
307 |
-
|
308 |
-
.wp_themeSkin .mceExternalClose {
|
309 |
-
position: absolute;
|
310 |
-
top: 3px;
|
311 |
-
right: 3px;
|
312 |
-
width: 7px;
|
313 |
-
height: 7px;
|
314 |
-
background: url("../js/tinymce/skins/wordpress/images/icons.gif") -820px 0;
|
315 |
-
}
|
316 |
-
|
317 |
-
/* Layout */
|
318 |
-
.wp_themeSkin table.mceToolbar,
|
319 |
-
.wp_themeSkin tr.mceFirst .mceToolbar tr td,
|
320 |
-
.wp_themeSkin tr.mceLast .mceToolbar tr td {
|
321 |
-
border: 0;
|
322 |
-
margin: 0;
|
323 |
-
padding: 0;
|
324 |
-
}
|
325 |
-
|
326 |
-
.wp_themeSkin table.mceLayout {
|
327 |
-
border: 0;
|
328 |
-
}
|
329 |
-
|
330 |
-
.wp_themeSkin .mceStatusbar {
|
331 |
-
background: #fff;
|
332 |
-
border-top: 1px solid #eee;
|
333 |
-
color: #000;
|
334 |
-
display: block;
|
335 |
-
font-family: sans-serif;
|
336 |
-
font-size: 12px;
|
337 |
-
height: 20px;
|
338 |
-
line-height: 16px;
|
339 |
-
padding: 0 0 0 8px;
|
340 |
-
overflow: visible;
|
341 |
-
}
|
342 |
-
|
343 |
-
.wp_themeSkin .mceStatusbar * {
|
344 |
-
color: #555;
|
345 |
-
}
|
346 |
-
|
347 |
-
.wp_themeSkin .mceStatusbar div {
|
348 |
-
float: left;
|
349 |
-
padding: 2px;
|
350 |
-
}
|
351 |
-
|
352 |
-
.wp_themeSkin .mceStatusbar a.mceResize {
|
353 |
-
display: block;
|
354 |
-
float: right;
|
355 |
-
background: url("../js/tinymce/skins/wordpress/images/icons.gif") -800px 0;
|
356 |
-
width: 20px;
|
357 |
-
height: 20px;
|
358 |
-
cursor: se-resize;
|
359 |
-
}
|
360 |
-
|
361 |
-
.wp_themeSkin .mceStatusbar a:hover {
|
362 |
-
text-decoration: underline;
|
363 |
-
}
|
364 |
-
|
365 |
-
.wp_themeSkin table.mceToolbar {
|
366 |
-
margin: 0 6px 2px;
|
367 |
-
}
|
368 |
-
|
369 |
-
.wp_themeSkin table.mceToolbar :active,
|
370 |
-
.wp_themeSkin table.mceToolbar :focus,
|
371 |
-
.wp_themeSkin table.mceToolbar:focus,
|
372 |
-
.wp_themeSkin span.mceSeparator:focus {
|
373 |
-
outline: none;
|
374 |
-
}
|
375 |
-
|
376 |
-
.wp_themeSkin #content_toolbar1 {
|
377 |
-
margin-top: 2px;
|
378 |
-
}
|
379 |
-
|
380 |
-
.wp_themeSkin .mceToolbar .mceToolbarEndListBox span {
|
381 |
-
display: none;
|
382 |
-
}
|
383 |
-
|
384 |
-
.wp_themeSkin span.mceIcon,
|
385 |
-
.wp_themeSkin img.mceIcon {
|
386 |
-
display: block;
|
387 |
-
width: 20px;
|
388 |
-
height: 20px;
|
389 |
-
}
|
390 |
-
|
391 |
-
a .mceIcon, .mceAction {
|
392 |
-
text-align: center;
|
393 |
-
font: normal 20px/1 'dashicons' !important;
|
394 |
-
speak: none;
|
395 |
-
-webkit-font-smoothing: antialiased;
|
396 |
-
-moz-osx-font-smoothing: grayscale;
|
397 |
-
}
|
398 |
-
|
399 |
-
.mceAction {
|
400 |
-
line-height:16px;
|
401 |
-
}
|
402 |
-
|
403 |
-
/* Button */
|
404 |
-
.wp_themeSkin .mceButton {
|
405 |
-
display: block;
|
406 |
-
width: 20px;
|
407 |
-
height: 20px;
|
408 |
-
cursor: default;
|
409 |
-
padding: 1px 2px;
|
410 |
-
margin: 1px;
|
411 |
-
-webkit-border-radius: 2px;
|
412 |
-
border-radius: 2px;
|
413 |
-
}
|
414 |
-
|
415 |
-
.wp_themeSkin a.mceButtonEnabled:hover {
|
416 |
-
background-image: inherit 0 -10px;
|
417 |
-
}
|
418 |
-
|
419 |
-
.wp_themeSkin .mceOldBoxModel a.mceButton span, .wp_themeSkin .mceOldBoxModel a.mceButton img {
|
420 |
-
margin: 0 0 0 1px;
|
421 |
-
}
|
422 |
-
|
423 |
-
.wp_themeSkin .mceButtonDisabled .mceIcon {
|
424 |
-
opacity: 0.2;
|
425 |
-
filter: alpha(opacity=20);
|
426 |
-
}
|
427 |
-
|
428 |
-
/* Separator */
|
429 |
-
.wp_themeSkin .mceSeparator {
|
430 |
-
display: none;
|
431 |
-
}
|
432 |
-
|
433 |
-
/* ListBox */
|
434 |
-
.wp_themeSkin .mceListBox,
|
435 |
-
.wp_themeSkin .mceListBox a {
|
436 |
-
display: block;
|
437 |
-
}
|
438 |
-
|
439 |
-
.wp_themeSkin .mceListBox .mceText {
|
440 |
-
padding: 1px 4px 1px 5px;
|
441 |
-
width: 70px;
|
442 |
-
text-align: left;
|
443 |
-
text-decoration: none;
|
444 |
-
-webkit-border-bottom-left-radius: 2px;
|
445 |
-
-webkit-border-top-left-radius: 2px;
|
446 |
-
border-bottom-left-radius: 2px;
|
447 |
-
border-top-left-radius: 2px;
|
448 |
-
font-family: sans-serif;
|
449 |
-
font-size: 12px;
|
450 |
-
height: 20px;
|
451 |
-
line-height: 20px;
|
452 |
-
overflow: hidden;
|
453 |
-
}
|
454 |
-
|
455 |
-
.wp_themeSkin .mceListBox {
|
456 |
-
margin: 1px;
|
457 |
-
direction: ltr;
|
458 |
-
background-color: #fff;
|
459 |
-
border: 1px solid #ddd;
|
460 |
-
-webkit-box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2);
|
461 |
-
box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2);
|
462 |
-
}
|
463 |
-
|
464 |
-
.wp_themeSkin .mceListBox .mceOpen {
|
465 |
-
width: 12px;
|
466 |
-
height: 20px;
|
467 |
-
border-collapse: separate;
|
468 |
-
padding: 1px;
|
469 |
-
-webkit-border-bottom-left-radius: 0;
|
470 |
-
-webkit-border-top-left-radius: 0;
|
471 |
-
border-bottom-left-radius: 0;
|
472 |
-
border-top-left-radius: 0;
|
473 |
-
}
|
474 |
-
|
475 |
-
.wp_themeSkin .mceListBox .mceFirst a {
|
476 |
-
border-style: solid;
|
477 |
-
border-width: 1px;
|
478 |
-
border-bottom-right-radius: 2px;
|
479 |
-
border-top-right-radius: 2px;
|
480 |
-
}
|
481 |
-
|
482 |
-
.wp_themeSkin .mceListBoxMenu .mce_formatPreview {
|
483 |
-
line-height: normal;
|
484 |
-
}
|
485 |
-
|
486 |
-
.wp_themeSkin .mceListBox .mceOpen,
|
487 |
-
.wp_themeSkin .mceListBoxHover .mceOpen,
|
488 |
-
.wp_themeSkin .mceListBoxSelected .mceOpen,
|
489 |
-
.wp_themeSkin table.mceListBoxEnabled .mceOpen {
|
490 |
-
background-image: url("../../../../../wp-includes/images/down_arrow.gif");
|
491 |
-
background-position: 3px 1px;
|
492 |
-
background-repeat: no-repeat;
|
493 |
-
}
|
494 |
-
|
495 |
-
.wp_themeSkin .mceListBoxDisabled .mceText {
|
496 |
-
color: gray;
|
497 |
-
}
|
498 |
-
|
499 |
-
.wp_themeSkin .mceListBoxMenu {
|
500 |
-
overflow: auto;
|
501 |
-
overflow-x: hidden;
|
502 |
-
}
|
503 |
-
|
504 |
-
.wp_themeSkin .mceOldBoxModel .mceListBox .mceText {
|
505 |
-
height: 22px;
|
506 |
-
}
|
507 |
-
|
508 |
-
.wp_themeSkin select.mceListBox {
|
509 |
-
font-family: sans-serif;
|
510 |
-
font-size: 12px;
|
511 |
-
border-color: #b2b2b2;
|
512 |
-
background-color: #fff;
|
513 |
-
}
|
514 |
-
|
515 |
-
/* SplitButton */
|
516 |
-
.wp_themeSkin .mceSplitButton a,
|
517 |
-
.wp_themeSkin .mceSplitButton span {
|
518 |
-
display: block;
|
519 |
-
height: 20px;
|
520 |
-
}
|
521 |
-
|
522 |
-
.wp_themeSkin .mceSplitButton {
|
523 |
-
display: block;
|
524 |
-
direction: ltr;
|
525 |
-
}
|
526 |
-
|
527 |
-
.wp_themeSkin table.mceSplitButton td {
|
528 |
-
padding: 2px;
|
529 |
-
-webkit-border-radius: 2px;
|
530 |
-
border-radius: 2px;
|
531 |
-
}
|
532 |
-
|
533 |
-
.wp_themeSkin table.mceSplitButton:hover td {
|
534 |
-
background-image: inherit 0 -10px;
|
535 |
-
}
|
536 |
-
|
537 |
-
.wp_themeSkin .mceSplitButton a.mceAction {
|
538 |
-
height: 20px;
|
539 |
-
width: 20px;
|
540 |
-
padding: 1px 2px;
|
541 |
-
border-right: 0 none;
|
542 |
-
}
|
543 |
-
|
544 |
-
.wp_themeSkin .mceSplitButton span.mceAction {
|
545 |
-
background-image: url("../../../../../wp-includes/js/tinymce/skins/wordpress/images/icons.gif");
|
546 |
-
background-repeat: no-repeat;
|
547 |
-
background-color: transparent;
|
548 |
-
width: 20px;
|
549 |
-
}
|
550 |
-
|
551 |
-
.wp_themeSkin .mceSplitButton span.mceAction.mce_bullist,
|
552 |
-
.wp_themeSkin .mceSplitButton span.mceAction.mce_numlist {
|
553 |
-
background-image: none;
|
554 |
-
}
|
555 |
-
|
556 |
-
.wp_themeSkin .mceSplitButton a.mceOpen {
|
557 |
-
width: 11px;
|
558 |
-
height: 20px;
|
559 |
-
background-position: 0px 2px;
|
560 |
-
background-repeat: no-repeat;
|
561 |
-
padding: 1px 0;
|
562 |
-
}
|
563 |
-
|
564 |
-
.wp_themeSkin .mceSplitButton span.mceOpen {
|
565 |
-
display: none;
|
566 |
-
}
|
567 |
-
|
568 |
-
.wp_themeSkin .mceSplitButtonDisabled .mceAction {
|
569 |
-
opacity: 0.3;
|
570 |
-
filter: alpha(opacity=30);
|
571 |
-
}
|
572 |
-
|
573 |
-
.wp_themeSkin .mceListBox a.mceText,
|
574 |
-
.wp_themeSkin .mceSplitButton a.mceAction {
|
575 |
-
-webkit-border-bottom-left-radius: 2px;
|
576 |
-
-webkit-border-top-left-radius: 2px;
|
577 |
-
border-bottom-left-radius: 2px;
|
578 |
-
border-top-left-radius: 2px;
|
579 |
-
}
|
580 |
-
|
581 |
-
.wp_themeSkin .mceSplitButton a.mceOpen,
|
582 |
-
.wp_themeSkin .mceListBox a.mceOpen {
|
583 |
-
-webkit-border-bottom-right-radius: 2px;
|
584 |
-
-webkit-border-top-right-radius: 2px;
|
585 |
-
border-bottom-right-radius: 2px;
|
586 |
-
border-top-right-radius: 2px;
|
587 |
-
}
|
588 |
-
|
589 |
-
/* ColorSplitButton */
|
590 |
-
.wp_themeSkin div.mceColorSplitMenu table {
|
591 |
-
background-color: #ebebeb;
|
592 |
-
border-color: #bbb;
|
593 |
-
}
|
594 |
-
|
595 |
-
.wp_themeSkin .mceColorSplitMenu td {
|
596 |
-
padding: 2px;
|
597 |
-
}
|
598 |
-
|
599 |
-
.wp_themeSkin .mceColorSplitMenu a {
|
600 |
-
display: block;
|
601 |
-
width: 9px;
|
602 |
-
height: 9px;
|
603 |
-
overflow: hidden;
|
604 |
-
border-color: #B2B2B2;
|
605 |
-
}
|
606 |
-
|
607 |
-
.wp_themeSkin .mceColorSplitMenu td.mceMoreColors {
|
608 |
-
padding: 1px 3px 1px 1px;
|
609 |
-
}
|
610 |
-
|
611 |
-
.wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
|
612 |
-
width: 100%;
|
613 |
-
height: auto;
|
614 |
-
text-align: center;
|
615 |
-
font-family: "Open Sans", sans-serif;
|
616 |
-
font-size: 11px;
|
617 |
-
line-height: 20px;
|
618 |
-
border-color: #fff;
|
619 |
-
}
|
620 |
-
|
621 |
-
.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {}
|
622 |
-
.wp_themeSkin a.mceMoreColors:hover {}
|
623 |
-
.wp_themeSkin .mceColorPreview {
|
624 |
-
margin: -5px 0 0 2px;
|
625 |
-
width: 16px;
|
626 |
-
height: 4px;
|
627 |
-
overflow: hidden;
|
628 |
-
}
|
629 |
-
|
630 |
-
/* Menu */
|
631 |
-
.wp_themeSkin .mceMenu {
|
632 |
-
position: absolute;
|
633 |
-
left: 0;
|
634 |
-
top: 0;
|
635 |
-
z-index: 1000;
|
636 |
-
border-color: #ddd;
|
637 |
-
direction: ltr;
|
638 |
-
}
|
639 |
-
|
640 |
-
.wp_themeSkin .mceNoIcons span.mceIcon {
|
641 |
-
width: 0;
|
642 |
-
}
|
643 |
-
|
644 |
-
.wp_themeSkin .mceNoIcons a .mceText {
|
645 |
-
padding-left: 10px;
|
646 |
-
}
|
647 |
-
|
648 |
-
.wp_themeSkin .mceMenu table {
|
649 |
-
background-color: #ebeaeb;
|
650 |
-
}
|
651 |
-
|
652 |
-
.wp_themeSkin .mceMenu a,
|
653 |
-
.wp_themeSkin .mceMenu span,
|
654 |
-
.wp_themeSkin .mceMenu {
|
655 |
-
display: block;
|
656 |
-
}
|
657 |
-
|
658 |
-
.wp_themeSkin .mceMenu td {
|
659 |
-
height: 20px;overflow: hidden;
|
660 |
-
}
|
661 |
-
|
662 |
-
.wp_themeSkin .mceMenu a {
|
663 |
-
position: relative;
|
664 |
-
padding: 3px 0 4px 0;
|
665 |
-
text-decoration: none !important;
|
666 |
-
}
|
667 |
-
|
668 |
-
.wp_themeSkin .mceMenu .mceText {
|
669 |
-
position: relative;
|
670 |
-
display: block;
|
671 |
-
font-family: "Open Sans", sans-serif;
|
672 |
-
cursor: default;
|
673 |
-
margin: 0;
|
674 |
-
padding: 0 25px;
|
675 |
-
color: #000;
|
676 |
-
}
|
677 |
-
|
678 |
-
.wp_themeSkin .mceMenu span.mceText, .wp_themeSkin .mceMenu .mcePreview {
|
679 |
-
font-size: 12px;
|
680 |
-
}
|
681 |
-
|
682 |
-
.wp_themeSkin .mceMenu pre.mceText {
|
683 |
-
font-family: Monospace;
|
684 |
-
}
|
685 |
-
|
686 |
-
.wp_themeSkin .mceMenu .mceIcon {
|
687 |
-
position: absolute;
|
688 |
-
top: 0;
|
689 |
-
left: 0;
|
690 |
-
width: 22px;
|
691 |
-
}
|
692 |
-
|
693 |
-
.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,
|
694 |
-
.wp_themeSkin .mceMenu .mceMenuItemActive {
|
695 |
-
background-color: #f5f5f5;
|
696 |
-
}
|
697 |
-
|
698 |
-
.wp_themeSkin td.mceMenuItemSeparator {
|
699 |
-
height: 1px;
|
700 |
-
background-color: #aaa;
|
701 |
-
}
|
702 |
-
|
703 |
-
.wp_themeSkin .mceMenuItemTitle a {
|
704 |
-
border-top: 0;
|
705 |
-
border-right: 0;
|
706 |
-
border-left: 0;
|
707 |
-
border-bottom: 1px solid #aaa;
|
708 |
-
text-decoration: none !important;
|
709 |
-
background-color: #ccc;
|
710 |
-
}
|
711 |
-
|
712 |
-
.wp_themeSkin .mceMenuItemTitle span.mceText {
|
713 |
-
font-weight: bold;
|
714 |
-
padding-left: 4px;
|
715 |
-
color: #000;
|
716 |
-
}
|
717 |
-
|
718 |
-
.wp_themeSkin .mceMenuItemSelected .mceIcon {
|
719 |
-
background: url("/wp-includes/js/tinymce/skins/wordpress/images/menu_check.gif");
|
720 |
-
color: #888;
|
721 |
-
}
|
722 |
-
|
723 |
-
.wp_themeSkin .mceNoIcons .mceMenuItemSelected a {
|
724 |
-
background: url("/wp-includes/js/tinymce/skins/wordpress/images/menu_arrow.gif") no-repeat -6px center;
|
725 |
-
}
|
726 |
-
|
727 |
-
.wp_themeSkin .mceMenu span.mceMenuLine {
|
728 |
-
display: none;
|
729 |
-
}
|
730 |
-
|
731 |
-
.wp_themeSkin .mceMenuItemSub a {
|
732 |
-
background: url("/wp-includes/js/tinymce/skins/wordpress/images/menu_arrow.gif") no-repeat top right;
|
733 |
-
}
|
734 |
-
|
735 |
-
/* Progress,Resize */
|
736 |
-
.wp_themeSkin .mceBlocker {
|
737 |
-
position: absolute;
|
738 |
-
left: 0;
|
739 |
-
top: 0;
|
740 |
-
z-index: 1000;
|
741 |
-
opacity: 0.5;
|
742 |
-
filter: alpha(opacity=50);
|
743 |
-
background: #FFF;
|
744 |
-
}
|
745 |
-
|
746 |
-
.wp_themeSkin .mceProgress {
|
747 |
-
position: absolute;
|
748 |
-
left: 0;
|
749 |
-
top: 0;
|
750 |
-
z-index: 1001;
|
751 |
-
background: url("/wp-includes/images/spinner.gif") no-repeat;
|
752 |
-
width: 32px;
|
753 |
-
height: 32px;
|
754 |
-
margin: -16px 0 0 -16px;
|
755 |
-
}
|
756 |
-
|
757 |
-
.wp_themeSkin .mcePlaceHolder {
|
758 |
-
border: 1px dotted gray;
|
759 |
-
}
|
760 |
-
|
761 |
-
/* Rtl */
|
762 |
-
.mceRtl .mceListBox .mceText {
|
763 |
-
text-align: right;
|
764 |
-
padding: 0 4px 0 0;
|
765 |
-
}
|
766 |
-
|
767 |
-
.mceRtl .mceMenuItem .mceText {
|
768 |
-
text-align: right;
|
769 |
-
}
|
770 |
-
|
771 |
-
/* Formats */
|
772 |
-
.wp_themeSkin .mce_p span.mceText {}
|
773 |
-
.wp_themeSkin .mce_address span.mceText {
|
774 |
-
font-style: italic;
|
775 |
-
}
|
776 |
-
|
777 |
-
.wp_themeSkin .mce_pre span.mceText {
|
778 |
-
font-family: monospace;
|
779 |
-
}
|
780 |
-
|
781 |
-
.wp_themeSkin .mce_h1 span.mceText {
|
782 |
-
font-weight: bolder;
|
783 |
-
font-size: 18px;
|
784 |
-
}
|
785 |
-
|
786 |
-
.wp_themeSkin .mce_h2 span.mceText {
|
787 |
-
font-weight: bolder;
|
788 |
-
font-size: 14px;
|
789 |
-
}
|
790 |
-
|
791 |
-
.wp_themeSkin .mce_h3 span.mceText {
|
792 |
-
font-weight: bolder;
|
793 |
-
font-size: 12px;
|
794 |
-
}
|
795 |
-
|
796 |
-
.wp_themeSkin .mce_h4 span.mceText {
|
797 |
-
font-weight: bolder;
|
798 |
-
font-size: 11px;
|
799 |
-
}
|
800 |
-
|
801 |
-
.wp_themeSkin .mce_h5 span.mceText {
|
802 |
-
font-weight: bolder;
|
803 |
-
font-size: 11px;
|
804 |
-
}
|
805 |
-
|
806 |
-
.wp_themeSkin .mce_h6 span.mceText {
|
807 |
-
font-weight: bolder;
|
808 |
-
font-size: 10px;
|
809 |
-
}
|
810 |
-
|
811 |
-
span.mce_bold:before {
|
812 |
-
content: '\f200';
|
813 |
-
}
|
814 |
-
|
815 |
-
span.mce_italic:before {
|
816 |
-
content: '\f201';
|
817 |
-
}
|
818 |
-
|
819 |
-
span.mce_bullist:before {
|
820 |
-
content: '\f203';
|
821 |
-
}
|
822 |
-
|
823 |
-
span.mce_numlist:before {
|
824 |
-
content: '\f204';
|
825 |
-
}
|
826 |
-
|
827 |
-
span.mce_blockquote:before {
|
828 |
-
content: '\f205';
|
829 |
-
}
|
830 |
-
|
831 |
-
span.mce_justifyleft:before {
|
832 |
-
content: '\f206';
|
833 |
-
}
|
834 |
-
|
835 |
-
span.mce_justifycenter:before {
|
836 |
-
content: '\f207';
|
837 |
-
}
|
838 |
-
|
839 |
-
span.mce_justifyright:before {
|
840 |
-
content: '\f208';
|
841 |
-
}
|
842 |
-
|
843 |
-
span.mce_link:before {
|
844 |
-
content: '\f103';
|
845 |
-
}
|
846 |
-
|
847 |
-
span.mce_unlink:before {
|
848 |
-
content: '\f225';
|
849 |
-
}
|
850 |
-
|
851 |
-
span.mce_wp_more:before {
|
852 |
-
content: '\f209';
|
853 |
-
}
|
854 |
-
|
855 |
-
span.mce_strikethrough:before {
|
856 |
-
content: '\f224';
|
857 |
-
}
|
858 |
-
|
859 |
-
span.mce_spellchecker {
|
860 |
-
font-size: 20px;
|
861 |
-
background: none !important;
|
862 |
-
margin-top: 2px;
|
863 |
-
}
|
864 |
-
|
865 |
-
span.mce_spellchecker:before {
|
866 |
-
content: '\f210';
|
867 |
-
}
|
868 |
-
|
869 |
-
span.mce_fullscreen:before,
|
870 |
-
span.mce_wp_fullscreen:before {
|
871 |
-
content: '\f211';
|
872 |
-
}
|
873 |
-
|
874 |
-
span.mce_wp_adv:before {
|
875 |
-
content: '\f212';
|
876 |
-
}
|
877 |
-
span.mce_underline:before {
|
878 |
-
content: '\f213';
|
879 |
-
}
|
880 |
-
|
881 |
-
span.mce_justifyfull:before {
|
882 |
-
content: '\f214';
|
883 |
-
}
|
884 |
-
|
885 |
-
span.mce_forecolor {
|
886 |
-
background: none !important;
|
887 |
-
}
|
888 |
-
|
889 |
-
span.mce_forecolor:before {
|
890 |
-
content: '\f215';
|
891 |
-
}
|
892 |
-
|
893 |
-
span.mce_pastetext:before {
|
894 |
-
content: '\f217';
|
895 |
-
}
|
896 |
-
|
897 |
-
span.mce_pasteword:before {
|
898 |
-
content: '\f216';
|
899 |
-
}
|
900 |
-
|
901 |
-
span.mce_removeformat:before {
|
902 |
-
content: '\f218';
|
903 |
-
}
|
904 |
-
|
905 |
-
span.mce_charmap:before {
|
906 |
-
content: '\f220';
|
907 |
-
}
|
908 |
-
|
909 |
-
span.mce_outdent:before {
|
910 |
-
content: '\f221';
|
911 |
-
}
|
912 |
-
|
913 |
-
span.mce_indent:before {
|
914 |
-
content: '\f222';
|
915 |
-
}
|
916 |
-
|
917 |
-
span.mce_undo:before {
|
918 |
-
content: '\f171';
|
919 |
-
}
|
920 |
-
|
921 |
-
span.mce_redo:before {
|
922 |
-
content: '\f172';
|
923 |
-
}
|
924 |
-
|
925 |
-
span.mce_help:before,
|
926 |
-
span.mce_wp_help:before {
|
927 |
-
content: '\f223';
|
928 |
-
}
|
929 |
-
|
930 |
-
span.mce_image:before {
|
931 |
-
content: '\f104';
|
932 |
-
}
|
933 |
-
|
934 |
-
span.mce_ltr:before {
|
935 |
-
content: '\f320';
|
936 |
-
}
|
937 |
-
|
938 |
-
/* Default icons */
|
939 |
-
.wp_themeSkin span.mce_cleanup {background-position:-380px -20px}
|
940 |
-
.wp_themeSkin span.mce_anchor {background-position:-200px 0}
|
941 |
-
.wp_themeSkin span.mce_sub {background-position:-600px 0}
|
942 |
-
.wp_themeSkin span.mce_sup {background-position:-620px 0}
|
943 |
-
.wp_themeSkin span.mce_newdocument {background-position:-520px 0}
|
944 |
-
.wp_themeSkin span.mce_image {background-position:-380px 0}
|
945 |
-
.wp_themeSkin span.mce_code {background-position:-260px 0}
|
946 |
-
.wp_themeSkin span.mce_hr {background-position:-360px 0}
|
947 |
-
.wp_themeSkin span.mce_visualaid {background-position:-660px 0}
|
948 |
-
.wp_themeSkin span.mce_paste {background-position:-560px 0}
|
949 |
-
.wp_themeSkin span.mce_copy {background-position:-700px 0}
|
950 |
-
.wp_themeSkin span.mce_cut {background-position:-680px 0}
|
951 |
-
.wp_themeSkin .mce_backcolor span.mceAction {background-position:-760px 0}
|
952 |
-
.wp_themeSkin .mce_backcolorpicker {background-position:-760px 0}
|
953 |
-
|
954 |
-
/* Plugins */
|
955 |
-
.wp_themeSkin span.mce_advhr {background-position:-0px -20px}
|
956 |
-
.wp_themeSkin span.mce_ltr {background-position:-20px -20px}
|
957 |
-
.wp_themeSkin span.mce_rtl {background-position:-40px -20px}
|
958 |
-
.wp_themeSkin span.mce_emotions {background-position:-60px -20px}
|
959 |
-
.wp_themeSkin span.mce_fullpage {background-position:-80px -20px}
|
960 |
-
.wp_themeSkin span.mce_iespell {background-position:-120px -20px}
|
961 |
-
.wp_themeSkin span.mce_insertdate {background-position:-140px -20px}
|
962 |
-
.wp_themeSkin span.mce_inserttime {background-position:-160px -20px}
|
963 |
-
.wp_themeSkin span.mce_absolute {background-position:-180px -20px}
|
964 |
-
.wp_themeSkin span.mce_backward {background-position:-200px -20px}
|
965 |
-
.wp_themeSkin span.mce_forward {background-position:-220px -20px}
|
966 |
-
.wp_themeSkin span.mce_insert_layer {background-position:-240px -20px}
|
967 |
-
.wp_themeSkin span.mce_insertlayer {background-position:-260px -20px}
|
968 |
-
.wp_themeSkin span.mce_movebackward {background-position:-280px -20px}
|
969 |
-
.wp_themeSkin span.mce_moveforward {background-position:-300px -20px}
|
970 |
-
.wp_themeSkin span.mce_media {background-position:-320px -20px}
|
971 |
-
.wp_themeSkin span.mce_nonbreaking {background-position:-340px -20px}
|
972 |
-
.wp_themeSkin span.mce_selectall {background-position:-400px -20px}
|
973 |
-
.wp_themeSkin span.mce_preview {background-position:-420px -20px}
|
974 |
-
.wp_themeSkin span.mce_print {background-position:-440px -20px}
|
975 |
-
.wp_themeSkin span.mce_cancel {background-position:-460px -20px}
|
976 |
-
.wp_themeSkin span.mce_save {background-position:-480px -20px}
|
977 |
-
.wp_themeSkin span.mce_replace {background-position:-500px -20px}
|
978 |
-
.wp_themeSkin span.mce_search {background-position:-520px -20px}
|
979 |
-
.wp_themeSkin span.mce_styleprops {background-position:-560px -20px}
|
980 |
-
.wp_themeSkin span.mce_table {background-position:-580px -20px}
|
981 |
-
.wp_themeSkin span.mce_cell_props {background-position:-600px -20px}
|
982 |
-
.wp_themeSkin span.mce_delete_table {background-position:-620px -20px}
|
983 |
-
.wp_themeSkin span.mce_delete_col {background-position:-640px -20px}
|
984 |
-
.wp_themeSkin span.mce_delete_row {background-position:-660px -20px}
|
985 |
-
.wp_themeSkin span.mce_col_after {background-position:-680px -20px}
|
986 |
-
.wp_themeSkin span.mce_col_before {background-position:-700px -20px}
|
987 |
-
.wp_themeSkin span.mce_row_after {background-position:-720px -20px}
|
988 |
-
.wp_themeSkin span.mce_row_before {background-position:-740px -20px}
|
989 |
-
.wp_themeSkin span.mce_merge_cells {background-position:-760px -20px}
|
990 |
-
.wp_themeSkin span.mce_table_props {background-position:-980px -20px}
|
991 |
-
.wp_themeSkin span.mce_row_props {background-position:-780px -20px}
|
992 |
-
.wp_themeSkin span.mce_split_cells {background-position:-800px -20px}
|
993 |
-
.wp_themeSkin span.mce_template {background-position:-820px -20px}
|
994 |
-
.wp_themeSkin span.mce_visualchars {background-position:-840px -20px}
|
995 |
-
.wp_themeSkin span.mce_abbr {background-position:-860px -20px}
|
996 |
-
.wp_themeSkin span.mce_acronym {background-position:-880px -20px}
|
997 |
-
.wp_themeSkin span.mce_attribs {background-position:-900px -20px}
|
998 |
-
.wp_themeSkin span.mce_cite {background-position:-920px -20px}
|
999 |
-
.wp_themeSkin span.mce_del {background-position:-940px -20px}
|
1000 |
-
.wp_themeSkin span.mce_ins {background-position:-960px -20px}
|
1001 |
-
.wp_themeSkin span.mce_pagebreak {background-position:0 -40px}
|
1002 |
-
.wp_themeSkin span.mce_restoredraft {background-position:-20px -40px}
|
1003 |
-
.wp_themeSkin span.mce_visualblocks {background-position: -40px -40px}
|
1004 |
-
|
1005 |
-
/* border */
|
1006 |
-
.wp_themeSkin .mceExternalToolbar,
|
1007 |
-
.wp_themeSkin .mceButton,
|
1008 |
-
.wp_themeSkin a.mceButtonEnabled:hover,
|
1009 |
-
.wp_themeSkin a.mceButtonActive,
|
1010 |
-
.wp_themeSkin a.mceButtonSelected,
|
1011 |
-
.wp_themeSkin .mceListBox .mceText,
|
1012 |
-
.wp_themeSkin .mceListBox .mceOpen,
|
1013 |
-
.wp_themeSkin select.mceListBox,
|
1014 |
-
.wp_themeSkin .mceSplitButton a.mceAction,
|
1015 |
-
.wp_themeSkin .mceSplitButton a.mceOpen,
|
1016 |
-
.wp_themeSkin .mceSplitButton a.mceOpen:hover,
|
1017 |
-
.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
|
1018 |
-
.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,
|
1019 |
-
.wp_themeSkin .mceSplitButton a.mceAction:hover,
|
1020 |
-
.wp_themeSkin div.mceColorSplitMenu table,
|
1021 |
-
.wp_themeSkin .mceColorSplitMenu a,
|
1022 |
-
.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,
|
1023 |
-
.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,
|
1024 |
-
.wp_themeSkin a.mceMoreColors:hover,
|
1025 |
-
.wp_themeSkin .mceMenu {
|
1026 |
-
border-style: solid;
|
1027 |
-
border-width: 1px;
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
.wp_themeSkin .mceListBox .mceText {
|
1031 |
-
border-right: 0 none;
|
1032 |
-
}
|
1033 |
-
|
1034 |
-
.wp_themeSkin iframe {
|
1035 |
-
background: transparent;
|
1036 |
-
}
|
1037 |
-
|
1038 |
-
.wp_themeSkin .mceButton {
|
1039 |
-
border-color: transparent;
|
1040 |
-
}
|
1041 |
-
|
1042 |
-
.wp_themeSkin .mceListBox .mceText,
|
1043 |
-
.wp_themeSkin .mceListBox .mceOpen {
|
1044 |
-
border-color: transparent;
|
1045 |
-
}
|
1046 |
-
|
1047 |
-
.wp_themeSkin a.mceButtonEnabled:hover,
|
1048 |
-
.wp_themeSkin table.mceSplitButton:hover {
|
1049 |
-
border-color: #bbb;
|
1050 |
-
background: #eee;
|
1051 |
-
background-image: -webkit-gradient(linear, left bottom, left top, from(#e5e5e5), to(#fff));
|
1052 |
-
background-image: -webkit-linear-gradient(bottom, #e5e5e5, #fff);
|
1053 |
-
background-image: -moz-linear-gradient(bottom, #e5e5e5, #fff);
|
1054 |
-
background-image: -o-linear-gradient(bottom, #e5e5e5, #fff);
|
1055 |
-
background-image: linear-gradient(to top, #e5e5e5, #fff);
|
1056 |
-
}
|
1057 |
-
|
1058 |
-
.wp_themeSkin a.mceButton:active,
|
1059 |
-
.wp_themeSkin a.mceButtonEnabled:active,
|
1060 |
-
.wp_themeSkin a.mceButtonSelected:active,
|
1061 |
-
.wp_themeSkin a.mceButtonActive,
|
1062 |
-
.wp_themeSkin a.mceButtonActive:active,
|
1063 |
-
.wp_themeSkin a.mceButtonActive:hover,
|
1064 |
-
.wp_themeSkin .mceSplitButtonSelected table,
|
1065 |
-
.wp_themeSkin .mceSplitButtonSelected table:hover {
|
1066 |
-
outline: none;
|
1067 |
-
border-color: #999 #ccc #ccc #999;
|
1068 |
-
background: #eee;
|
1069 |
-
background-image: -webkit-gradient(linear, left bottom, left top, from(#f6f6f6), to(#e3e3e3));
|
1070 |
-
background-image: -webkit-linear-gradient(bottom, #f6f6f6, #e3e3e3);
|
1071 |
-
background-image: -moz-linear-gradient(bottom, #f6f6f6, #e3e3e3);
|
1072 |
-
background-image: -o-linear-gradient(bottom, #f6f6f6, #e3e3e3);
|
1073 |
-
background-image: linear-gradient(to top, #f6f6f6, #e3e3e3);
|
1074 |
-
}
|
1075 |
-
|
1076 |
-
.wp_themeSkin .mceSplitButtonSelected table a.mceOpen,
|
1077 |
-
.wp_themeSkin .mceSplitButtonSelected table a.mceAction {
|
1078 |
-
border-color: #999 #ccc #ccc #999;
|
1079 |
-
}
|
1080 |
-
|
1081 |
-
.wp_themeSkin .mceButtonDisabled {
|
1082 |
-
border-color: transparent;
|
1083 |
-
}
|
1084 |
-
|
1085 |
-
.wp_themeSkin .mceListBox .mceOpen {
|
1086 |
-
border-left: 0;
|
1087 |
-
}
|
1088 |
-
|
1089 |
-
.wp_themeSkin .mceListBoxEnabled:hover,
|
1090 |
-
.wp_themeSkin .mceListBoxEnabled:active,
|
1091 |
-
.wp_themeSkin .mceListBoxHover,
|
1092 |
-
.wp_themeSkin .mceListBoxHover:active,
|
1093 |
-
.wp_themeSkin .mceListBoxSelected {
|
1094 |
-
-webkit-box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .3);
|
1095 |
-
box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .3);
|
1096 |
-
border-color: #bbb;
|
1097 |
-
}
|
1098 |
-
|
1099 |
-
/* SplitButton */
|
1100 |
-
.wp_themeSkin .mceSplitButton .mceLast span.mceOpen .mceIconOnly {
|
1101 |
-
display: block;
|
1102 |
-
}
|
1103 |
-
|
1104 |
-
.wp_themeSkin .mceSplitButton a.mceAction,
|
1105 |
-
.wp_themeSkin .mceSplitButton a.mceOpen {
|
1106 |
-
border-color: transparent;
|
1107 |
-
}
|
1108 |
-
|
1109 |
-
.wp_themeSkin .mceSplitButton:hover a {
|
1110 |
-
border-color: #bbb;
|
1111 |
-
}
|
1112 |
-
|
1113 |
-
.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,
|
1114 |
-
.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
|
1115 |
-
.wp_themeSkin .mceSplitButtonActive a.mceOpen,
|
1116 |
-
.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen {
|
1117 |
-
background-image: url("../../../../../wp-includes/images/down_arrow.gif");
|
1118 |
-
background-position: 1px 2px;
|
1119 |
-
background-repeat: no-repeat;
|
1120 |
-
border-left: 0;
|
1121 |
-
}
|
1122 |
-
|
1123 |
-
.wp_themeSkin .mceSplitButtonActive td {
|
1124 |
-
-webkit-border-radius: 3px;
|
1125 |
-
border-radius: 3px;
|
1126 |
-
}
|
1127 |
-
|
1128 |
-
.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover {
|
1129 |
-
border-color: #0A246A;
|
1130 |
-
background-color: #B6BDD2;
|
1131 |
-
}
|
1132 |
-
|
1133 |
-
.wp_themeSkin a.mceMoreColors:hover {
|
1134 |
-
border-color: #0A246A;
|
1135 |
-
}
|
1136 |
-
|
1137 |
-
.wp_themeSkin .mceMenuItemDisabled .mceText {
|
1138 |
-
color: #888;
|
1139 |
-
}
|
1140 |
-
|
1141 |
-
#mceModalBlocker {
|
1142 |
-
background: #000;
|
1143 |
-
opacity: 0.7;
|
1144 |
-
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
|
1145 |
-
filter: alpha(opacity=70);
|
1146 |
-
}
|
1147 |
-
|
1148 |
-
/* WP specific */
|
1149 |
-
.wp-editor-wrap {
|
1150 |
-
position: relative;
|
1151 |
-
}
|
1152 |
-
|
1153 |
-
.wp-editor-tools {
|
1154 |
-
position: relative;
|
1155 |
-
z-index: 1;
|
1156 |
-
}
|
1157 |
-
|
1158 |
-
.wp-editor-container {
|
1159 |
-
clear: both;
|
1160 |
-
}
|
1161 |
-
|
1162 |
-
.wp-editor-area {
|
1163 |
-
font-family: Consolas, Monaco, monospace;
|
1164 |
-
font-size: 13px;
|
1165 |
-
padding: 10px;
|
1166 |
-
margin: 1px 0 0;
|
1167 |
-
line-height: 150%;
|
1168 |
-
border: 0 none;
|
1169 |
-
outline: none;
|
1170 |
-
display: block;
|
1171 |
-
resize: vertical;
|
1172 |
-
-moz-box-sizing: border-box;
|
1173 |
-
-webkit-box-sizing: border-box;
|
1174 |
-
box-sizing: border-box;
|
1175 |
-
}
|
1176 |
-
|
1177 |
-
.wp-editor-tools {
|
1178 |
-
padding: 0;
|
1179 |
-
}
|
1180 |
-
|
1181 |
-
.wp-editor-container textarea.wp-editor-area {
|
1182 |
-
width: 100%;
|
1183 |
-
margin: 0;
|
1184 |
-
-webkit-box-shadow: none;
|
1185 |
-
box-shadow: none;
|
1186 |
-
}
|
1187 |
-
|
1188 |
-
.quicktags-toolbar,
|
1189 |
-
.wp_themeSkin tr.mceFirst td.mceToolbar {
|
1190 |
-
border-bottom: 1px solid #dedede;
|
1191 |
-
background: #f5f5f5;
|
1192 |
-
}
|
1193 |
-
|
1194 |
-
.wp-editor-tabs {
|
1195 |
-
float: right;
|
1196 |
-
}
|
1197 |
-
|
1198 |
-
.wp-switch-editor {
|
1199 |
-
background: #ebebeb;
|
1200 |
-
border: 1px solid #dedede;
|
1201 |
-
color: #777;
|
1202 |
-
cursor: pointer;
|
1203 |
-
float: right;
|
1204 |
-
font: 13px/19px "Open Sans", sans-serif;
|
1205 |
-
height: 19px;
|
1206 |
-
margin: 5px 0 0 5px;
|
1207 |
-
padding: 3px 8px 4px;
|
1208 |
-
position: relative;
|
1209 |
-
top: 1px;
|
1210 |
-
}
|
1211 |
-
|
1212 |
-
.wp-switch-editor:active {
|
1213 |
-
background-color: #f1f1f1;
|
1214 |
-
}
|
1215 |
-
|
1216 |
-
.wp-switch-editor:hover {
|
1217 |
-
text-decoration: none !important;
|
1218 |
-
background: #fff;
|
1219 |
-
}
|
1220 |
-
|
1221 |
-
.js .tmce-active .wp-editor-area {
|
1222 |
-
color: white;
|
1223 |
-
}
|
1224 |
-
|
1225 |
-
.tmce-active .quicktags-toolbar {
|
1226 |
-
display: none;
|
1227 |
-
}
|
1228 |
-
|
1229 |
-
.tmce-active .switch-tmce,
|
1230 |
-
.html-active .switch-html {
|
1231 |
-
background: #f5f5f5;
|
1232 |
-
color: #555;
|
1233 |
-
height: 20px;
|
1234 |
-
border-bottom: none;
|
1235 |
-
}
|
1236 |
-
|
1237 |
-
.wp-media-buttons {
|
1238 |
-
float: left;
|
1239 |
-
}
|
1240 |
-
|
1241 |
-
.wp-media-buttons .button {
|
1242 |
-
margin-right: 5px;
|
1243 |
-
margin-bottom: 4px;
|
1244 |
-
padding-left: 7px;
|
1245 |
-
padding-right: 7px;
|
1246 |
-
}
|
1247 |
-
|
1248 |
-
.wp-media-buttons .button:active {
|
1249 |
-
position: relative;
|
1250 |
-
top: 1px;
|
1251 |
-
margin-top: -1px;
|
1252 |
-
margin-bottom: 1px;
|
1253 |
-
}
|
1254 |
-
|
1255 |
-
.wp-media-buttons .insert-media {
|
1256 |
-
padding-left: 5px;
|
1257 |
-
}
|
1258 |
-
|
1259 |
-
.wp-media-buttons a {
|
1260 |
-
text-decoration: none;
|
1261 |
-
color: #464646;
|
1262 |
-
font-size: 12px;
|
1263 |
-
}
|
1264 |
-
|
1265 |
-
.wp-media-buttons img {
|
1266 |
-
padding: 0 4px;
|
1267 |
-
vertical-align: middle;
|
1268 |
-
}
|
1269 |
-
|
1270 |
-
.wp-media-buttons span.wp-media-buttons-icon {
|
1271 |
-
display: inline-block;
|
1272 |
-
width: 18px;
|
1273 |
-
height: 18px;
|
1274 |
-
vertical-align: text-top;
|
1275 |
-
margin: 0 2px;
|
1276 |
-
}
|
1277 |
-
|
1278 |
-
.wp-media-buttons .add_media span.wp-media-buttons-icon {
|
1279 |
-
background: none;
|
1280 |
-
}
|
1281 |
-
|
1282 |
-
.wp-media-buttons .add_media span.wp-media-buttons-icon:before {
|
1283 |
-
font: normal 18px/1 'dashicons';
|
1284 |
-
speak: none;
|
1285 |
-
-webkit-font-smoothing: antialiased;
|
1286 |
-
-moz-osx-font-smoothing: grayscale;
|
1287 |
-
}
|
1288 |
-
|
1289 |
-
.wp-media-buttons .add_media span.wp-media-buttons-icon:before {
|
1290 |
-
content: '\f104';
|
1291 |
-
}
|
1292 |
-
|
1293 |
-
.quicktags-toolbar {
|
1294 |
-
border-bottom-style: solid;
|
1295 |
-
border-bottom-width: 1px;
|
1296 |
-
-webkit-border-top-right-radius: 3px;
|
1297 |
-
-webkit-border-top-left-radius: 3px;
|
1298 |
-
border-top-right-radius: 3px;
|
1299 |
-
border-top-left-radius: 3px;
|
1300 |
-
padding: 2px 8px 0;
|
1301 |
-
min-height: 29px;
|
1302 |
-
}
|
1303 |
-
|
1304 |
-
.quicktags-toolbar > div {
|
1305 |
-
padding: 2px 4px 0;
|
1306 |
-
}
|
1307 |
-
|
1308 |
-
.quicktags-toolbar input {
|
1309 |
-
margin: 2px 1px 4px;
|
1310 |
-
line-height: 18px;
|
1311 |
-
display: inline-block;
|
1312 |
-
min-width: 26px;
|
1313 |
-
padding: 2px 4px;
|
1314 |
-
font: 12px/18px "Open Sans", sans-serif;
|
1315 |
-
color: #464646;
|
1316 |
-
border: 1px solid #c3c3c3;
|
1317 |
-
-webkit-border-radius: 3px;
|
1318 |
-
border-radius: 3px;
|
1319 |
-
background: #eee;
|
1320 |
-
background-image: -webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));
|
1321 |
-
background-image: -webkit-linear-gradient(bottom, #e3e3e3, #fff);
|
1322 |
-
background-image: -moz-linear-gradient(bottom, #e3e3e3, #fff);
|
1323 |
-
background-image: -o-linear-gradient(bottom, #e3e3e3, #fff);
|
1324 |
-
background-image: linear-gradient(to top, #e3e3e3, #fff);
|
1325 |
-
}
|
1326 |
-
|
1327 |
-
.quicktags-toolbar input:hover {
|
1328 |
-
border-color: #aaa;
|
1329 |
-
background: #ddd;
|
1330 |
-
}
|
1331 |
-
|
1332 |
-
.quicktags-toolbar input[value="link"] {
|
1333 |
-
text-decoration: underline;
|
1334 |
-
}
|
1335 |
-
|
1336 |
-
.quicktags-toolbar input[value="del"] {
|
1337 |
-
text-decoration: line-through;
|
1338 |
-
}
|
1339 |
-
|
1340 |
-
.quicktags-toolbar input[value="i"] {
|
1341 |
-
font-style: italic;
|
1342 |
-
}
|
1343 |
-
|
1344 |
-
.quicktags-toolbar input[value="b"] {
|
1345 |
-
font-weight: bold;
|
1346 |
-
}
|
1347 |
-
|
1348 |
-
#wp_editbtns,
|
1349 |
-
#wp_gallerybtns {
|
1350 |
-
padding: 2px;
|
1351 |
-
position: absolute;
|
1352 |
-
display: none;
|
1353 |
-
z-index: 155000;
|
1354 |
-
}
|
1355 |
-
|
1356 |
-
#wp_editimgbtn,
|
1357 |
-
#wp_delimgbtn,
|
1358 |
-
#wp_editgallery,
|
1359 |
-
#wp_delgallery {
|
1360 |
-
border-color: #999;
|
1361 |
-
background-color: #eee;
|
1362 |
-
margin: 2px;
|
1363 |
-
padding: 2px;
|
1364 |
-
border-width: 1px;
|
1365 |
-
border-style: solid;
|
1366 |
-
-webkit-border-radius: 3px;
|
1367 |
-
border-radius: 3px;
|
1368 |
-
}
|
1369 |
-
|
1370 |
-
#wp_editimgbtn:hover,
|
1371 |
-
#wp_delimgbtn:hover,
|
1372 |
-
#wp_editgallery:hover,
|
1373 |
-
#wp_delgallery:hover {
|
1374 |
-
border-color: #555;
|
1375 |
-
background-color: #ccc;
|
1376 |
-
}
|
1377 |
-
|
1378 |
-
/*------------------------------------------------------------------------------
|
1379 |
-
wp-link
|
1380 |
-
------------------------------------------------------------------------------*/
|
1381 |
-
|
1382 |
-
#wp-link {
|
1383 |
-
background-color: #F5F5F5;
|
1384 |
-
line-height: 1.4em;
|
1385 |
-
font-size: 12px;
|
1386 |
-
}
|
1387 |
-
|
1388 |
-
#wp-link ol,
|
1389 |
-
#wp-link ul {
|
1390 |
-
list-style: none;
|
1391 |
-
margin: 0;
|
1392 |
-
padding: 0;
|
1393 |
-
}
|
1394 |
-
|
1395 |
-
#wp-link input[type="text"] {
|
1396 |
-
-webkit-box-sizing: border-box;
|
1397 |
-
}
|
1398 |
-
|
1399 |
-
#wp-link input[type="text"],
|
1400 |
-
#wp-link textarea {
|
1401 |
-
border-width: 1px;
|
1402 |
-
border-style: solid;
|
1403 |
-
-webkit-border-radius: 4px;
|
1404 |
-
border-radius: 4px;
|
1405 |
-
font-size: 12px;
|
1406 |
-
margin: 1px;
|
1407 |
-
padding: 3px;
|
1408 |
-
}
|
1409 |
-
|
1410 |
-
#wp-link #link-options {
|
1411 |
-
padding: 10px 0 14px;
|
1412 |
-
border-bottom: 1px solid #dfdfdf;
|
1413 |
-
margin: 0 6px 14px;
|
1414 |
-
}
|
1415 |
-
|
1416 |
-
#wp-link p.howto {
|
1417 |
-
margin: 3px;
|
1418 |
-
}
|
1419 |
-
|
1420 |
-
#wp-link #internal-toggle {
|
1421 |
-
display: inline-block;
|
1422 |
-
cursor: pointer;
|
1423 |
-
padding-left: 18px;
|
1424 |
-
}
|
1425 |
-
|
1426 |
-
#wp-link .toggle-arrow {
|
1427 |
-
background: transparent url("../../../../../wp-includes/images/toggle-arrow.png") top left no-repeat;
|
1428 |
-
height: 23px;
|
1429 |
-
line-height: 23px;
|
1430 |
-
}
|
1431 |
-
|
1432 |
-
#wp-link .toggle-arrow-active {
|
1433 |
-
background-position: center left;
|
1434 |
-
}
|
1435 |
-
|
1436 |
-
#wp-link label input[type="text"] {
|
1437 |
-
width: 360px;
|
1438 |
-
margin-top: 5px;
|
1439 |
-
}
|
1440 |
-
|
1441 |
-
#wp-link #link-options label span,
|
1442 |
-
#wp-link #search-panel label span.search-label {
|
1443 |
-
display: inline-block;
|
1444 |
-
width: 80px;
|
1445 |
-
text-align: right;
|
1446 |
-
padding-right: 5px;
|
1447 |
-
}
|
1448 |
-
|
1449 |
-
#wp-link .link-search-field {
|
1450 |
-
float: left;
|
1451 |
-
width: 220px;
|
1452 |
-
}
|
1453 |
-
|
1454 |
-
#wp-link .link-search-wrapper {
|
1455 |
-
margin: 5px 6px 9px;
|
1456 |
-
display: block;
|
1457 |
-
overflow: hidden;
|
1458 |
-
}
|
1459 |
-
|
1460 |
-
#wp-link .link-search-wrapper span {
|
1461 |
-
float: left;
|
1462 |
-
margin-top: 4px;
|
1463 |
-
}
|
1464 |
-
|
1465 |
-
#wp-link .link-search-wrapper .spinner {
|
1466 |
-
display: none;
|
1467 |
-
vertical-align: text-bottom;
|
1468 |
-
}
|
1469 |
-
|
1470 |
-
#wp-link .link-target {
|
1471 |
-
width: auto;
|
1472 |
-
padding: 3px 0 0;
|
1473 |
-
margin: 0 0 0 87px;
|
1474 |
-
font-size: 11px;
|
1475 |
-
}
|
1476 |
-
|
1477 |
-
#wp-link .query-results {
|
1478 |
-
border: 1px #dfdfdf solid;
|
1479 |
-
margin: 0 5px 5px;
|
1480 |
-
background: #fff;
|
1481 |
-
height: 185px;
|
1482 |
-
overflow: auto;
|
1483 |
-
position: relative;
|
1484 |
-
}
|
1485 |
-
|
1486 |
-
#wp-link li,
|
1487 |
-
#wp-link .query-notice {
|
1488 |
-
clear: both;
|
1489 |
-
margin-bottom: 0;
|
1490 |
-
border-bottom: 1px solid #f1f1f1;
|
1491 |
-
color: #333;
|
1492 |
-
padding: 4px 6px;
|
1493 |
-
cursor: pointer;
|
1494 |
-
position: relative;
|
1495 |
-
}
|
1496 |
-
|
1497 |
-
#wp-link li:hover {
|
1498 |
-
background: #eaf2fa;
|
1499 |
-
color: #151515;
|
1500 |
-
}
|
1501 |
-
|
1502 |
-
#wp-link li.unselectable {
|
1503 |
-
border-bottom: 1px solid #dfdfdf;
|
1504 |
-
}
|
1505 |
-
|
1506 |
-
#wp-link li.unselectable:hover {
|
1507 |
-
background: #fff;
|
1508 |
-
cursor: auto;
|
1509 |
-
color: #333;
|
1510 |
-
}
|
1511 |
-
|
1512 |
-
#wp-link li.selected {
|
1513 |
-
background: #ddd;
|
1514 |
-
color: #333;
|
1515 |
-
}
|
1516 |
-
|
1517 |
-
#wp-link li.selected .item-title {
|
1518 |
-
font-weight: bold;
|
1519 |
-
}
|
1520 |
-
|
1521 |
-
#wp-link .item-title {
|
1522 |
-
display: inline-block;
|
1523 |
-
width: 80%;
|
1524 |
-
}
|
1525 |
-
|
1526 |
-
#wp-link .item-info {
|
1527 |
-
text-transform: uppercase;
|
1528 |
-
color: #666;
|
1529 |
-
font-size: 11px;
|
1530 |
-
position: absolute;
|
1531 |
-
right: 5px;
|
1532 |
-
top: 4px;
|
1533 |
-
bottom: 0;
|
1534 |
-
}
|
1535 |
-
|
1536 |
-
#wp-link #search-results {
|
1537 |
-
display: none;
|
1538 |
-
}
|
1539 |
-
|
1540 |
-
#wp-link #search-panel {
|
1541 |
-
float: left;
|
1542 |
-
width: 100%;
|
1543 |
-
}
|
1544 |
-
|
1545 |
-
#wp-link .river-waiting {
|
1546 |
-
display: none;
|
1547 |
-
padding: 10px 0;
|
1548 |
-
}
|
1549 |
-
|
1550 |
-
#wp-link .river-waiting .spinner {
|
1551 |
-
margin: 0 auto;
|
1552 |
-
display: block;
|
1553 |
-
}
|
1554 |
-
|
1555 |
-
#wp-link .submitbox {
|
1556 |
-
padding: 5px 10px;
|
1557 |
-
font-size: 11px;
|
1558 |
-
overflow: auto;
|
1559 |
-
height: 29px;
|
1560 |
-
}
|
1561 |
-
|
1562 |
-
#wp-link-cancel {
|
1563 |
-
line-height: 25px;
|
1564 |
-
float: left;
|
1565 |
-
}
|
1566 |
-
|
1567 |
-
#wp-link-update {
|
1568 |
-
line-height: 23px;
|
1569 |
-
float: right;
|
1570 |
-
}
|
1571 |
-
|
1572 |
-
/*!
|
1573 |
-
* jQuery UI CSS Framework 1.10.1
|
1574 |
-
* http://jqueryui.com
|
1575 |
-
*
|
1576 |
-
* Copyright 2013 jQuery Foundation and other contributors
|
1577 |
-
* Released under the MIT license.
|
1578 |
-
* http://jquery.org/license
|
1579 |
-
*
|
1580 |
-
* http://docs.jquery.com/UI/Theming/API
|
1581 |
-
*/
|
1582 |
-
|
1583 |
-
/* Layout helpers
|
1584 |
-
----------------------------------*/
|
1585 |
-
.ui-helper-hidden {
|
1586 |
-
display: none;
|
1587 |
-
}
|
1588 |
-
.ui-helper-hidden-accessible {
|
1589 |
-
border: 0;
|
1590 |
-
clip: rect(0 0 0 0);
|
1591 |
-
height: 1px;
|
1592 |
-
margin: -1px;
|
1593 |
-
overflow: hidden;
|
1594 |
-
padding: 0;
|
1595 |
-
position: absolute;
|
1596 |
-
width: 1px;
|
1597 |
-
}
|
1598 |
-
.ui-helper-reset {
|
1599 |
-
margin: 0;
|
1600 |
-
padding: 0;
|
1601 |
-
border: 0;
|
1602 |
-
outline: 0;
|
1603 |
-
line-height: 1.3;
|
1604 |
-
text-decoration: none;
|
1605 |
-
font-size: 100%;
|
1606 |
-
list-style: none;
|
1607 |
-
}
|
1608 |
-
.ui-helper-clearfix:before,
|
1609 |
-
.ui-helper-clearfix:after {
|
1610 |
-
content: "";
|
1611 |
-
display: table;
|
1612 |
-
border-collapse: collapse;
|
1613 |
-
}
|
1614 |
-
.ui-helper-clearfix:after {
|
1615 |
-
clear: both;
|
1616 |
-
}
|
1617 |
-
.ui-helper-clearfix {
|
1618 |
-
min-height: 0; /* support: IE7 */
|
1619 |
-
}
|
1620 |
-
.ui-helper-zfix {
|
1621 |
-
width: 100%;
|
1622 |
-
height: 100%;
|
1623 |
-
top: 0;
|
1624 |
-
left: 0;
|
1625 |
-
position: absolute;
|
1626 |
-
opacity: 0;
|
1627 |
-
filter:Alpha(Opacity=0);
|
1628 |
-
}
|
1629 |
-
|
1630 |
-
.ui-front {
|
1631 |
-
z-index: 100;
|
1632 |
-
}
|
1633 |
-
|
1634 |
-
|
1635 |
-
/* Interaction Cues
|
1636 |
-
----------------------------------*/
|
1637 |
-
.ui-state-disabled {
|
1638 |
-
cursor: default !important;
|
1639 |
-
}
|
1640 |
-
|
1641 |
-
|
1642 |
-
/* Icons
|
1643 |
-
----------------------------------*/
|
1644 |
-
|
1645 |
-
/* states and images */
|
1646 |
-
.ui-icon {
|
1647 |
-
display: block;
|
1648 |
-
text-indent: -99999px;
|
1649 |
-
overflow: hidden;
|
1650 |
-
background-repeat: no-repeat;
|
1651 |
-
}
|
1652 |
-
|
1653 |
-
|
1654 |
-
/* Misc visuals
|
1655 |
-
----------------------------------*/
|
1656 |
-
|
1657 |
-
/* Overlays */
|
1658 |
-
.ui-widget-overlay {
|
1659 |
-
position: fixed;
|
1660 |
-
top: 0;
|
1661 |
-
left: 0;
|
1662 |
-
width: 100%;
|
1663 |
-
height: 100%;
|
1664 |
-
}
|
1665 |
-
|
1666 |
-
|
1667 |
-
/*!
|
1668 |
-
* jQuery UI Resizable 1.10.1
|
1669 |
-
* http://jqueryui.com
|
1670 |
-
*
|
1671 |
-
* Copyright 2013 jQuery Foundation and other contributors
|
1672 |
-
* Released under the MIT license.
|
1673 |
-
* http://jquery.org/license
|
1674 |
-
*
|
1675 |
-
* http://docs.jquery.com/UI/Resizable#theming
|
1676 |
-
*/
|
1677 |
-
.ui-resizable {
|
1678 |
-
position: relative;
|
1679 |
-
}
|
1680 |
-
.ui-resizable-handle {
|
1681 |
-
position: absolute;
|
1682 |
-
font-size: 0.1px;
|
1683 |
-
display: block;
|
1684 |
-
}
|
1685 |
-
.ui-resizable-disabled .ui-resizable-handle,
|
1686 |
-
.ui-resizable-autohide .ui-resizable-handle {
|
1687 |
-
display: none;
|
1688 |
-
}
|
1689 |
-
.ui-resizable-n {
|
1690 |
-
cursor: n-resize;
|
1691 |
-
height: 7px;
|
1692 |
-
width: 100%;
|
1693 |
-
top: -5px;
|
1694 |
-
left: 0;
|
1695 |
-
}
|
1696 |
-
.ui-resizable-s {
|
1697 |
-
cursor: s-resize;
|
1698 |
-
height: 7px;
|
1699 |
-
width: 100%;
|
1700 |
-
bottom: -5px;
|
1701 |
-
left: 0;
|
1702 |
-
}
|
1703 |
-
.ui-resizable-e {
|
1704 |
-
cursor: e-resize;
|
1705 |
-
width: 7px;
|
1706 |
-
right: -5px;
|
1707 |
-
top: 0;
|
1708 |
-
height: 100%;
|
1709 |
-
}
|
1710 |
-
.ui-resizable-w {
|
1711 |
-
cursor: w-resize;
|
1712 |
-
width: 7px;
|
1713 |
-
left: -5px;
|
1714 |
-
top: 0;
|
1715 |
-
height: 100%;
|
1716 |
-
}
|
1717 |
-
.ui-resizable-se {
|
1718 |
-
cursor: se-resize;
|
1719 |
-
width: 12px;
|
1720 |
-
height: 12px;
|
1721 |
-
right: 1px;
|
1722 |
-
bottom: 1px;
|
1723 |
-
}
|
1724 |
-
.ui-resizable-sw {
|
1725 |
-
cursor: sw-resize;
|
1726 |
-
width: 9px;
|
1727 |
-
height: 9px;
|
1728 |
-
left: -5px;
|
1729 |
-
bottom: -5px;
|
1730 |
-
}
|
1731 |
-
.ui-resizable-nw {
|
1732 |
-
cursor: nw-resize;
|
1733 |
-
width: 9px;
|
1734 |
-
height: 9px;
|
1735 |
-
left: -5px;
|
1736 |
-
top: -5px;
|
1737 |
-
}
|
1738 |
-
.ui-resizable-ne {
|
1739 |
-
cursor: ne-resize;
|
1740 |
-
width: 9px;
|
1741 |
-
height: 9px;
|
1742 |
-
right: -5px;
|
1743 |
-
top: -5px;
|
1744 |
-
}
|
1745 |
-
|
1746 |
-
/*!
|
1747 |
-
* jQuery UI Dialog 1.10.1
|
1748 |
-
* http://jqueryui.com
|
1749 |
-
*
|
1750 |
-
* Copyright 2013 jQuery Foundation and other contributors
|
1751 |
-
* Released under the MIT license.
|
1752 |
-
* http://jquery.org/license
|
1753 |
-
*
|
1754 |
-
* http://docs.jquery.com/UI/Dialog#theming
|
1755 |
-
*/
|
1756 |
-
.ui-dialog {
|
1757 |
-
position: absolute;
|
1758 |
-
top: 0;
|
1759 |
-
/* @noflip */
|
1760 |
-
left: 0;
|
1761 |
-
padding: .2em;
|
1762 |
-
outline: 0;
|
1763 |
-
}
|
1764 |
-
.ui-dialog .ui-dialog-titlebar {
|
1765 |
-
padding: .4em 1em;
|
1766 |
-
position: relative;
|
1767 |
-
}
|
1768 |
-
.ui-dialog .ui-dialog-title {
|
1769 |
-
float: left;
|
1770 |
-
margin: .1em 0;
|
1771 |
-
white-space: nowrap;
|
1772 |
-
width: 90%;
|
1773 |
-
overflow: hidden;
|
1774 |
-
text-overflow: ellipsis;
|
1775 |
-
}
|
1776 |
-
.ui-dialog .ui-dialog-titlebar-close {
|
1777 |
-
position: absolute;
|
1778 |
-
right: .3em;
|
1779 |
-
top: 50%;
|
1780 |
-
width: 21px;
|
1781 |
-
margin: -10px 0 0 0;
|
1782 |
-
padding: 1px;
|
1783 |
-
height: 20px;
|
1784 |
-
}
|
1785 |
-
.ui-dialog .ui-dialog-content {
|
1786 |
-
position: relative;
|
1787 |
-
border: 0;
|
1788 |
-
padding: .5em 1em;
|
1789 |
-
background: none;
|
1790 |
-
overflow: auto;
|
1791 |
-
}
|
1792 |
-
.ui-dialog .ui-dialog-buttonpane {
|
1793 |
-
text-align: left;
|
1794 |
-
border-width: 1px 0 0 0;
|
1795 |
-
background-image: none;
|
1796 |
-
margin-top: .5em;
|
1797 |
-
padding: .3em 1em .5em .4em;
|
1798 |
-
}
|
1799 |
-
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
1800 |
-
float: right;
|
1801 |
-
}
|
1802 |
-
.ui-dialog .ui-dialog-buttonpane button {
|
1803 |
-
margin: .5em .4em .5em 0;
|
1804 |
-
cursor: pointer;
|
1805 |
-
}
|
1806 |
-
.ui-dialog .ui-resizable-se {
|
1807 |
-
width: 12px;
|
1808 |
-
height: 12px;
|
1809 |
-
right: -5px;
|
1810 |
-
bottom: -5px;
|
1811 |
-
background-position: 16px 16px;
|
1812 |
-
}
|
1813 |
-
.ui-draggable .ui-dialog-titlebar {
|
1814 |
-
cursor: move;
|
1815 |
-
}
|
1816 |
-
|
1817 |
-
/* WP jQuery Dialog Theme */
|
1818 |
-
.wp-dialog {
|
1819 |
-
padding: 0;
|
1820 |
-
z-index: 300002;
|
1821 |
-
border: 0;
|
1822 |
-
-webkit-box-shadow: 0 5px 15px rgba(0,0,0,0.7);
|
1823 |
-
box-shadow: 0 5px 15px rgba(0,0,0,0.7);
|
1824 |
-
background-color: #f5f5f5;
|
1825 |
-
}
|
1826 |
-
|
1827 |
-
.wp-dialog .ui-dialog-title {
|
1828 |
-
display: block;
|
1829 |
-
text-align: center;
|
1830 |
-
padding: 0;
|
1831 |
-
}
|
1832 |
-
|
1833 |
-
.wp-dialog .ui-dialog-titlebar {
|
1834 |
-
padding: 0 1em;
|
1835 |
-
background-color: #444;
|
1836 |
-
font-size: 13px;
|
1837 |
-
line-height: 24px;
|
1838 |
-
color: #fff;
|
1839 |
-
}
|
1840 |
-
|
1841 |
-
.wp-dialog .ui-dialog-content {
|
1842 |
-
padding: 0;
|
1843 |
-
}
|
1844 |
-
|
1845 |
-
.wp-dialog .ui-dialog-titlebar-close {
|
1846 |
-
cursor: pointer;
|
1847 |
-
-webkit-appearance: none;
|
1848 |
-
border: 0;
|
1849 |
-
width: 30px;
|
1850 |
-
height: 20px;
|
1851 |
-
top: 13px;
|
1852 |
-
right: 6px;
|
1853 |
-
background: none;
|
1854 |
-
}
|
1855 |
-
|
1856 |
-
.wp-dialog .ui-dialog-titlebar-close:before {
|
1857 |
-
content: '\f158';
|
1858 |
-
font: normal 20px/1 'dashicons';
|
1859 |
-
speak: none;
|
1860 |
-
-webkit-font-smoothing: antialiased;
|
1861 |
-
-moz-osx-font-smoothing: grayscale;
|
1862 |
-
color: #999;
|
1863 |
-
padding-left: 12px;
|
1864 |
-
}
|
1865 |
-
|
1866 |
-
.wp-dialog .ui-dialog-titlebar-close:hover:before {
|
1867 |
-
color: #2ea2cc;
|
1868 |
-
}
|
1869 |
-
|
1870 |
-
.wp-dialog .ui-dialog-titlebar-close .ui-button-text {
|
1871 |
-
display: none;
|
1872 |
-
}
|
1873 |
-
|
1874 |
-
.wp-dialog .ui-dialog-titlebar-close:hover,
|
1875 |
-
.wp-dialog .ui-dialog-titlebar-close:focus {
|
1876 |
-
background-position: -87px -32px;
|
1877 |
-
}
|
1878 |
-
|
1879 |
-
.ui-widget-overlay {
|
1880 |
-
z-index: 300001;
|
1881 |
-
background-color: #000;
|
1882 |
-
opacity: 0.6;
|
1883 |
-
filter: alpha(opacity=60);
|
1884 |
-
}
|
1885 |
-
|
1886 |
-
/* TinyMCE modal */
|
1887 |
-
.clearlooks2 .mceTop {
|
1888 |
-
border-bottom: 1px solid #ccc;
|
1889 |
-
}
|
1890 |
-
|
1891 |
-
.clearlooks2 .mceTop span {
|
1892 |
-
font: 13px/24px "Open Sans", sans-serif;
|
1893 |
-
color: #e5e5e5;
|
1894 |
-
}
|
1895 |
-
|
1896 |
-
.clearlooks2 .mceTop .mceLeft {
|
1897 |
-
background: #444444;
|
1898 |
-
border-color: transparent;
|
1899 |
-
}
|
1900 |
-
|
1901 |
-
.clearlooks2 .mceTop .mceRight {
|
1902 |
-
background: #444444;
|
1903 |
-
border-color: transparent;
|
1904 |
-
}
|
1905 |
-
|
1906 |
-
.clearlooks2 .mceMiddle {
|
1907 |
-
clip: rect(24px auto auto auto);
|
1908 |
-
}
|
1909 |
-
|
1910 |
-
.clearlooks2 .mceMiddle .mceLeft {
|
1911 |
-
background: #f1f1f1;
|
1912 |
-
border-color: transparent;
|
1913 |
-
}
|
1914 |
-
|
1915 |
-
.clearlooks2 .mceMiddle .mceRight {
|
1916 |
-
background: #f1f1f1;
|
1917 |
-
border-color: transparent;
|
1918 |
-
}
|
1919 |
-
|
1920 |
-
.clearlooks2 .mceBottom {
|
1921 |
-
background: #f1f1f1;
|
1922 |
-
border-color: transparent;
|
1923 |
-
}
|
1924 |
-
|
1925 |
-
.clearlooks2 .mceBottom .mceLeft {
|
1926 |
-
background: #f1f1f1;
|
1927 |
-
border-color: transparent;
|
1928 |
-
}
|
1929 |
-
|
1930 |
-
.clearlooks2 .mceBottom .mceCenter {
|
1931 |
-
background: #f1f1f1;
|
1932 |
-
border-color: transparent;
|
1933 |
-
}
|
1934 |
-
|
1935 |
-
.clearlooks2 .mceBottom .mceRight {
|
1936 |
-
background: #f1f1f1;
|
1937 |
-
border-color: transparent;
|
1938 |
-
}
|
1939 |
-
|
1940 |
-
.clearlooks2 .mceClose,
|
1941 |
-
.clearlooks2 .mceFocus .mceClose,
|
1942 |
-
.clearlooks2 .mceFocus .mceClose:hover {
|
1943 |
-
background-image: none;
|
1944 |
-
}
|
1945 |
-
.clearlooks2 .mceClose:before {
|
1946 |
-
speak: none;
|
1947 |
-
-webkit-font-smoothing: antialiased;
|
1948 |
-
-moz-osx-font-smoothing: grayscale;
|
1949 |
-
color: #999;
|
1950 |
-
padding-left: 12px;
|
1951 |
-
}
|
1952 |
-
|
1953 |
-
/* Distraction Free Writing mode
|
1954 |
-
* =Overlay Styles
|
1955 |
-
-------------------------------------------------------------- */
|
1956 |
-
.fullscreen-overlay {
|
1957 |
-
z-index: 149999;
|
1958 |
-
display: none;
|
1959 |
-
position: fixed;
|
1960 |
-
top: 0;
|
1961 |
-
bottom: 0;
|
1962 |
-
left: 0;
|
1963 |
-
right: 0;
|
1964 |
-
filter: inherit;
|
1965 |
-
}
|
1966 |
-
|
1967 |
-
.fullscreen-active .fullscreen-overlay,
|
1968 |
-
.fullscreen-active #wp-fullscreen-body {
|
1969 |
-
display: block;
|
1970 |
-
}
|
1971 |
-
|
1972 |
-
.fullscreen-fader {
|
1973 |
-
z-index: 200000;
|
1974 |
-
}
|
1975 |
-
|
1976 |
-
.fullscreen-active .fullscreen-fader {
|
1977 |
-
display: none;
|
1978 |
-
}
|
1979 |
-
|
1980 |
-
/* =Overlay Body
|
1981 |
-
-------------------------------------------------------------- */
|
1982 |
-
#wp-fullscreen-body {
|
1983 |
-
width: 100%;
|
1984 |
-
z-index: 150005;
|
1985 |
-
display: none;
|
1986 |
-
position: absolute;
|
1987 |
-
top: 0;
|
1988 |
-
left: 0;
|
1989 |
-
font-size: 12px;
|
1990 |
-
}
|
1991 |
-
|
1992 |
-
#wp-fullscreen-wrap {
|
1993 |
-
margin: 0 auto 50px;
|
1994 |
-
position: relative;
|
1995 |
-
padding-top: 60px;
|
1996 |
-
}
|
1997 |
-
|
1998 |
-
#wp-fullscreen-title {
|
1999 |
-
font-size: 1.7em;
|
2000 |
-
line-height: 100%;
|
2001 |
-
outline: medium none;
|
2002 |
-
padding: 6px 7px;
|
2003 |
-
width: 100%;
|
2004 |
-
margin-bottom: 30px;
|
2005 |
-
-webkit-box-shadow: none;
|
2006 |
-
box-shadow: none;
|
2007 |
-
}
|
2008 |
-
|
2009 |
-
#wp-fullscreen-container {
|
2010 |
-
padding: 4px 10px 50px;
|
2011 |
-
}
|
2012 |
-
|
2013 |
-
#wp-fullscreen-title,
|
2014 |
-
#wp-fullscreen-container {
|
2015 |
-
-webkit-border-radius: 0;
|
2016 |
-
border-radius: 0;
|
2017 |
-
border: 1px dashed transparent;
|
2018 |
-
background: transparent;
|
2019 |
-
-moz-transition-property: border-color;
|
2020 |
-
-moz-transition-duration: 0.6s;
|
2021 |
-
-webkit-transition-property: border-color;
|
2022 |
-
-webkit-transition-duration: 0.6s;
|
2023 |
-
-o-transition-property: border-color;
|
2024 |
-
-o-transition-duration: 0.6s;
|
2025 |
-
transition-property: border-color;
|
2026 |
-
transition-duration: 0.6s;
|
2027 |
-
}
|
2028 |
-
|
2029 |
-
#wp_mce_fullscreen {
|
2030 |
-
width: 100%;
|
2031 |
-
min-height: 300px;
|
2032 |
-
border: 0;
|
2033 |
-
background: transparent;
|
2034 |
-
font-family: Consolas, Monaco, monospace;
|
2035 |
-
line-height: 1.6em;
|
2036 |
-
padding: 0;
|
2037 |
-
overflow-y: hidden;
|
2038 |
-
outline: none;
|
2039 |
-
resize: none;
|
2040 |
-
-webkit-box-shadow: none;
|
2041 |
-
box-shadow: none;
|
2042 |
-
}
|
2043 |
-
|
2044 |
-
#wp-fullscreen-tagline {
|
2045 |
-
color: #BBBBBB;
|
2046 |
-
font-size: 18px;
|
2047 |
-
float: right;
|
2048 |
-
padding-top: 5px;
|
2049 |
-
}
|
2050 |
-
|
2051 |
-
/* =Top bar
|
2052 |
-
-------------------------------------------------------------- */
|
2053 |
-
#fullscreen-topbar {
|
2054 |
-
background: #f5f5f5;
|
2055 |
-
border-bottom: 1px solid #fff;
|
2056 |
-
height: 40px;
|
2057 |
-
left: 0;
|
2058 |
-
min-width: 800px;
|
2059 |
-
position: fixed;
|
2060 |
-
top: 0;
|
2061 |
-
width: 100%;
|
2062 |
-
z-index: 150050;
|
2063 |
-
}
|
2064 |
-
|
2065 |
-
#wp-fullscreen-toolbar {
|
2066 |
-
padding: 6px 10px 0;
|
2067 |
-
clear: both;
|
2068 |
-
max-width: 1100px;
|
2069 |
-
min-width: 820px;
|
2070 |
-
margin: 0 auto;
|
2071 |
-
}
|
2072 |
-
|
2073 |
-
#wp-fullscreen-mode-bar,
|
2074 |
-
#wp-fullscreen-button-bar,
|
2075 |
-
#wp-fullscreen-close,
|
2076 |
-
#wp-fullscreen-count {
|
2077 |
-
float: left;
|
2078 |
-
}
|
2079 |
-
|
2080 |
-
#wp-fullscreen-save {
|
2081 |
-
float: right;
|
2082 |
-
padding: 2px 2px 0 5px;
|
2083 |
-
}
|
2084 |
-
|
2085 |
-
#wp-fullscreen-count,
|
2086 |
-
#wp-fullscreen-close {
|
2087 |
-
padding-top: 5px;
|
2088 |
-
}
|
2089 |
-
|
2090 |
-
#wp-fullscreen-central-toolbar {
|
2091 |
-
margin: auto;
|
2092 |
-
padding: 0;
|
2093 |
-
}
|
2094 |
-
|
2095 |
-
#wp-fullscreen-buttons > div {
|
2096 |
-
float: left;
|
2097 |
-
}
|
2098 |
-
|
2099 |
-
#wp-fullscreen-mode-bar {
|
2100 |
-
padding: 1px 14px 0 0;
|
2101 |
-
}
|
2102 |
-
|
2103 |
-
#wp-fullscreen-modes a {
|
2104 |
-
display: block;
|
2105 |
-
font-size: 11px;
|
2106 |
-
text-decoration: none;
|
2107 |
-
float: left;
|
2108 |
-
margin: 1px 0 0 0;
|
2109 |
-
padding: 2px 6px 2px;
|
2110 |
-
border-width: 1px 1px 1px 0;
|
2111 |
-
border-style: solid;
|
2112 |
-
border-color: #bbb;
|
2113 |
-
color: #777;
|
2114 |
-
text-shadow: 0 1px 0 #fff;
|
2115 |
-
background-color: #f4f4f4;
|
2116 |
-
background: #f4f4f4;
|
2117 |
-
background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9));
|
2118 |
-
background-image: -webkit-linear-gradient(bottom, #e4e4e4, #f9f9f9);
|
2119 |
-
background-image: -moz-linear-gradient(bottom, #e4e4e4, #f9f9f9);
|
2120 |
-
background-image: -o-linear-gradient(bottom, #e4e4e4, #f9f9f9);
|
2121 |
-
background-image: linear-gradient(to top, #e4e4e4, #f9f9f9);
|
2122 |
-
}
|
2123 |
-
|
2124 |
-
#wp-fullscreen-modes a:hover,
|
2125 |
-
.wp-html-mode #wp-fullscreen-modes a:last-child,
|
2126 |
-
.wp-tmce-mode #wp-fullscreen-modes a:first-child {
|
2127 |
-
color: #333;
|
2128 |
-
border-color: #999;
|
2129 |
-
background: #eee;
|
2130 |
-
background-image: -webkit-gradient(linear, left top, left bottom, from(#e4e4e4), to(#f9f9f9));
|
2131 |
-
background-image: -webkit-linear-gradient(top, #e4e4e4, #f9f9f9);
|
2132 |
-
background-image: -moz-linear-gradient(top, #e4e4e4, #f9f9f9);
|
2133 |
-
background-image: -o-linear-gradient(top, #e4e4e4, #f9f9f9);
|
2134 |
-
background-image: linear-gradient(to bottom, #e4e4e4, #f9f9f9);
|
2135 |
-
}
|
2136 |
-
|
2137 |
-
#wp-fullscreen-modes a:first-child {
|
2138 |
-
border-width: 1px;
|
2139 |
-
-webkit-border-top-left-radius: 3px;
|
2140 |
-
-webkit-border-bottom-left-radius: 3px;
|
2141 |
-
border-top-left-radius: 3px;
|
2142 |
-
border-bottom-left-radius: 3px;
|
2143 |
-
}
|
2144 |
-
|
2145 |
-
#wp-fullscreen-modes a:last-child {
|
2146 |
-
-webkit-border-top-right-radius: 3px;
|
2147 |
-
-webkit-border-bottom-right-radius: 3px;
|
2148 |
-
border-top-right-radius: 3px;
|
2149 |
-
border-bottom-right-radius: 3px;
|
2150 |
-
}
|
2151 |
-
|
2152 |
-
#wp-fullscreen-buttons .active a {
|
2153 |
-
background: inherit;
|
2154 |
-
}
|
2155 |
-
|
2156 |
-
#wp-fullscreen-buttons .hidden {
|
2157 |
-
display: none;
|
2158 |
-
}
|
2159 |
-
|
2160 |
-
#wp-fullscreen-buttons .disabled {
|
2161 |
-
opacity: 0.5;
|
2162 |
-
}
|
2163 |
-
|
2164 |
-
.wp-html-mode #wp-fullscreen-buttons div {
|
2165 |
-
display: none;
|
2166 |
-
}
|
2167 |
-
|
2168 |
-
.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both {
|
2169 |
-
display: block;
|
2170 |
-
}
|
2171 |
-
|
2172 |
-
#fullscreen-topbar.fullscreen-make-sticky {
|
2173 |
-
display: block !important;
|
2174 |
-
}
|
2175 |
-
|
2176 |
-
#wp-fullscreen-save img {
|
2177 |
-
vertical-align: middle;
|
2178 |
-
}
|
2179 |
-
|
2180 |
-
#wp-fullscreen-save img,
|
2181 |
-
#wp-fullscreen-save span {
|
2182 |
-
padding-right: 4px;
|
2183 |
-
display: none;
|
2184 |
-
}
|
2185 |
-
|
2186 |
-
/* =Thickbox Adjustments
|
2187 |
-
-------------------------------------------------------------- */
|
2188 |
-
.fullscreen-active #TB_overlay {
|
2189 |
-
z-index: 150100;
|
2190 |
-
}
|
2191 |
-
|
2192 |
-
.fullscreen-active #TB_window {
|
2193 |
-
z-index: 150102;
|
2194 |
-
}
|
2195 |
-
|
2196 |
-
/* =TinyMCE Adjustments
|
2197 |
-
-------------------------------------------------------------- */
|
2198 |
-
#wp_mce_fullscreen_ifr {
|
2199 |
-
background: transparent;
|
2200 |
-
}
|
2201 |
-
|
2202 |
-
#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst {
|
2203 |
-
display : none;
|
2204 |
-
}
|
2205 |
-
|
2206 |
-
#wp-fullscreen-container .wp_themeSkin table td {
|
2207 |
-
vertical-align: top;
|
2208 |
-
}
|
2209 |
-
|
2210 |
-
/* Colors */
|
2211 |
-
.fullscreen-overlay {
|
2212 |
-
background: #fff;
|
2213 |
-
}
|
2214 |
-
|
2215 |
-
.wp-fullscreen-focus #wp-fullscreen-title,
|
2216 |
-
.wp-fullscreen-focus #wp-fullscreen-container {
|
2217 |
-
border-color: #ccc;
|
2218 |
-
}
|
2219 |
-
|
2220 |
-
/* =CSS 3 transitions
|
2221 |
-
-------------------------------------------------------------- */
|
2222 |
-
|
2223 |
-
.fade-1000,
|
2224 |
-
.fade-600,
|
2225 |
-
.fade-400,
|
2226 |
-
.fade-300 {
|
2227 |
-
opacity: 0;
|
2228 |
-
-moz-transition-property: opacity;
|
2229 |
-
-webkit-transition-property: opacity;
|
2230 |
-
-o-transition-property: opacity;
|
2231 |
-
transition-property: opacity;
|
2232 |
-
}
|
2233 |
-
|
2234 |
-
.fade-1000 {
|
2235 |
-
-moz-transition-duration: 1s;
|
2236 |
-
-webkit-transition-duration: 1s;
|
2237 |
-
-o-transition-duration: 1s;
|
2238 |
-
transition-duration: 1s;
|
2239 |
-
}
|
2240 |
-
|
2241 |
-
.fade-600 {
|
2242 |
-
-moz-transition-duration: 0.6s;
|
2243 |
-
-webkit-transition-duration: 0.6s;
|
2244 |
-
-o-transition-duration: 0.6s;
|
2245 |
-
transition-duration: 0.6s;
|
2246 |
-
}
|
2247 |
-
|
2248 |
-
.fade-400 {
|
2249 |
-
-moz-transition-duration: 0.4s;
|
2250 |
-
-webkit-transition-duration: 0.4s;
|
2251 |
-
-o-transition-duration: 0.4s;
|
2252 |
-
transition-duration: 0.4s;
|
2253 |
-
}
|
2254 |
-
|
2255 |
-
.fade-300 {
|
2256 |
-
-moz-transition-duration: 0.3s;
|
2257 |
-
-webkit-transition-duration: 0.3s;
|
2258 |
-
-o-transition-duration: 0.3s;
|
2259 |
-
transition-duration: 0.3s;
|
2260 |
-
}
|
2261 |
-
|
2262 |
-
.fade-trigger {
|
2263 |
-
opacity: 1;
|
2264 |
-
}
|
2265 |
-
|
2266 |
-
/* =Localization
|
2267 |
-
-------------------------------------------------------------- */
|
2268 |
-
.rtl .wp_themeSkin .mceColorSplitMenu a.mceMoreColors,
|
2269 |
-
.rtl .wp_themeSkin .mceMenu .mceText,
|
2270 |
-
.rtl .wp-switch-editor,
|
2271 |
-
.rtl .quicktags-toolbar input,
|
2272 |
-
.rtl .clearlooks2 .mceTop span,
|
2273 |
-
.rtl .wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
|
2274 |
-
font-family: Tahoma, sans-serif;
|
2275 |
-
}
|
2276 |
-
|
2277 |
-
html:lang(he-il) .rtl .wp_themeSkin .mceColorSplitMenu a.mceMoreColors,
|
2278 |
-
html:lang(he-il) .rtl .wp_themeSkin .mceMenu .mceText,
|
2279 |
-
html:lang(he-il) .rtl .wp-switch-editor,
|
2280 |
-
html:lang(he-il) .rtl .quicktags-toolbar input,
|
2281 |
-
html:lang(he-il) .rtl .clearlooks2 .mceTop span,
|
2282 |
-
html:lang(he-il) .rtl .wp_themeSkin .mceColorSplitMenu a.mceMoreColors {
|
2283 |
-
font-family: Arial, sans-serif;
|
2284 |
-
}
|
2285 |
-
|
2286 |
-
|
2287 |
-
/* HiDPI */
|
2288 |
-
@media print,
|
2289 |
-
(-o-min-device-pixel-ratio: 5/4),
|
2290 |
-
(-webkit-min-device-pixel-ratio: 1.25),
|
2291 |
-
(min-resolution: 120dpi) {
|
2292 |
-
.wp-media-buttons .add_media span.wp-media-buttons-icon,
|
2293 |
-
#wp-fullscreen-buttons #wp_fs_image span.mce_image {
|
2294 |
-
background: none;
|
2295 |
-
}
|
2296 |
-
|
2297 |
-
.wp_themeSkin .mceListBox .mceOpen,
|
2298 |
-
.wp_themeSkin .mceListBoxHover .mceOpen,
|
2299 |
-
.wp_themeSkin .mceListBoxSelected .mceOpen,
|
2300 |
-
.wp_themeSkin table.mceListBoxEnabled .mceOpen {
|
2301 |
-
background-image: url('../../../../../wp-includes/images/down_arrow-2x.gif');
|
2302 |
-
background-size: 10px 20px;
|
2303 |
-
}
|
2304 |
-
|
2305 |
-
.wp_themeSkin .mceSplitButtonEnabled a.mceOpen,
|
2306 |
-
.wp_themeSkin .mceSplitButtonSelected a.mceOpen,
|
2307 |
-
.wp_themeSkin .mceSplitButtonActive a.mceOpen,
|
2308 |
-
.wp_themeSkin .mceSplitButtonEnabled:hover a.mceOpen {
|
2309 |
-
background-image: url('../../../../../wp-includes/images/down_arrow-2x.gif');
|
2310 |
-
background-size: 10px 20px;
|
2311 |
-
}
|
2312 |
-
|
2313 |
-
#wp-link .toggle-arrow {
|
2314 |
-
background: transparent url('../../../../../wp-includes/images/toggle-arrow-2x.png') top left no-repeat;
|
2315 |
-
background-size: 19px 69px;
|
2316 |
-
}
|
2317 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/vendor/bootstrap.tooltip.css
DELETED
@@ -1,101 +0,0 @@
|
|
1 |
-
.tooltip {
|
2 |
-
position: absolute;
|
3 |
-
z-index: 1030;
|
4 |
-
display: block;
|
5 |
-
visibility: visible;
|
6 |
-
font-size: 12px;
|
7 |
-
line-height: 1.4;
|
8 |
-
opacity: 0;
|
9 |
-
filter: alpha(opacity=0);
|
10 |
-
}
|
11 |
-
.tooltip.in {
|
12 |
-
opacity: 0.9;
|
13 |
-
filter: alpha(opacity=90);
|
14 |
-
}
|
15 |
-
.tooltip.top {
|
16 |
-
margin-top: -3px;
|
17 |
-
padding: 5px 0;
|
18 |
-
}
|
19 |
-
.tooltip.right {
|
20 |
-
margin-left: 3px;
|
21 |
-
padding: 0 5px;
|
22 |
-
}
|
23 |
-
.tooltip.bottom {
|
24 |
-
margin-top: 3px;
|
25 |
-
padding: 5px 0;
|
26 |
-
}
|
27 |
-
.tooltip.left {
|
28 |
-
margin-left: -3px;
|
29 |
-
padding: 0 5px;
|
30 |
-
}
|
31 |
-
.tooltip-inner {
|
32 |
-
max-width: 200px;
|
33 |
-
padding: 3px 8px;
|
34 |
-
color: #ffffff;
|
35 |
-
text-align: center;
|
36 |
-
text-decoration: none;
|
37 |
-
background-color: #000000;
|
38 |
-
border-radius: 4px;
|
39 |
-
}
|
40 |
-
.tooltip-inner a {
|
41 |
-
color: #fff;
|
42 |
-
}
|
43 |
-
.tooltip-arrow {
|
44 |
-
position: absolute;
|
45 |
-
width: 0;
|
46 |
-
height: 0;
|
47 |
-
border-color: transparent;
|
48 |
-
border-style: solid;
|
49 |
-
}
|
50 |
-
.tooltip.top .tooltip-arrow {
|
51 |
-
bottom: 0;
|
52 |
-
left: 50%;
|
53 |
-
margin-left: -5px;
|
54 |
-
border-width: 5px 5px 0;
|
55 |
-
border-top-color: #000000;
|
56 |
-
}
|
57 |
-
.tooltip.top-left .tooltip-arrow {
|
58 |
-
bottom: 0;
|
59 |
-
left: 5px;
|
60 |
-
border-width: 5px 5px 0;
|
61 |
-
border-top-color: #000000;
|
62 |
-
}
|
63 |
-
.tooltip.top-right .tooltip-arrow {
|
64 |
-
bottom: 0;
|
65 |
-
right: 5px;
|
66 |
-
border-width: 5px 5px 0;
|
67 |
-
border-top-color: #000000;
|
68 |
-
}
|
69 |
-
.tooltip.right .tooltip-arrow {
|
70 |
-
top: 50%;
|
71 |
-
left: 0;
|
72 |
-
margin-top: -5px;
|
73 |
-
border-width: 5px 5px 5px 0;
|
74 |
-
border-right-color: #000000;
|
75 |
-
}
|
76 |
-
.tooltip.left .tooltip-arrow {
|
77 |
-
top: 50%;
|
78 |
-
right: 0;
|
79 |
-
margin-top: -5px;
|
80 |
-
border-width: 5px 0 5px 5px;
|
81 |
-
border-left-color: #000000;
|
82 |
-
}
|
83 |
-
.tooltip.bottom .tooltip-arrow {
|
84 |
-
top: 0;
|
85 |
-
left: 50%;
|
86 |
-
margin-left: -5px;
|
87 |
-
border-width: 0 5px 5px;
|
88 |
-
border-bottom-color: #000000;
|
89 |
-
}
|
90 |
-
.tooltip.bottom-left .tooltip-arrow {
|
91 |
-
top: 0;
|
92 |
-
left: 5px;
|
93 |
-
border-width: 0 5px 5px;
|
94 |
-
border-bottom-color: #000000;
|
95 |
-
}
|
96 |
-
.tooltip.bottom-right .tooltip-arrow {
|
97 |
-
top: 0;
|
98 |
-
right: 5px;
|
99 |
-
border-width: 0 5px 5px;
|
100 |
-
border-bottom-color: #000000;
|
101 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css/wysija-editor.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-table}* html .clearfix{height:1%}.clearfix{display:block}.hidden{display:none}strong{font-weight:bold}img{vertical-align:middle}:focus{outline:0 !important}.inline{display:-moz-inline-box;display:inline-block;*display:inline;*float:left}.wysija_tools li,.wysija_tools dd{margin:0 !important}.wysija_controls li{margin:0 0 0 3px !important}#wysija_items{position:fixed;width:275px;right:20px;top:20px;z-index:999}#wysija_items li{line-height:100px;height:100px;outline:1px solid #ccc;text-align:center}.wysija_items li.disabled{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";filter:alpha(opacity=20);-moz-opacity:0.2;opacity:0.2}.wysija_items li.active a{height:100px;cursor:pointer;display:block}.wysija_header,.wysija_footer{position:relative;display:inline-table;display:block;height:1%;margin:0;padding:0;z-index:98}.wysija_header:after,.wysija_footer:after{content:".";display:block;height:0;clear:both;visibility:hidden}.wysija_block{position:relative;margin:0 10px;padding:10px 18px 10px 18px;display:inline-table;display:block;height:1%;margin:0;z-index:98}.wysija_block.dragging,.wysija_header.dragging,.wysija_footer.dragging{z-index:99000}.wysija_block:after{content:".";display:block;height:0;clear:both;visibility:hidden}.wysija_block.hover{border:1px dashed #bbb;margin:0 0 0 0;padding:9px 17px 9px 17px}.wysija_block.static{padding:0;margin:0}.wysija_block .wysija_controls{background-color:#dfdfdf;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#bbb), to(#eee));-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;border:1px solid #ccc;position:absolute;margin:0;padding:0;width:598px;height:20px;left:-1px;right:0;top:-22px;width:100%}.wysija_block .wysija_controls .handle{width:600px}.wysija_block .wysija_controls li{float:left;width:20px;height:20px}.wysija_block .wysija_controls a{cursor:pointer;float:left;font-size:120%;font-weight:bold;height:20px;line-height:20px;text-align:center;width:20px;color:#000}.wysija_block .handle_container,.wysija_block .handle_container a{float:none;width:40px}.wysija_block .handle_container{left:280px;top:0;position:absolute}.wysija_gallery .wysija_tools,.wysija_image .wysija_tools{position:absolute;height:34px;line-height:34px;margin:0;width:152px;top:-36px;z-index:1010;background-color:#dfdfdf;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#bbb), to(#eee));-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;border:1px solid #ccc;padding:0 0 0 5px}.wysija_gallery .wysija_tools{width:102px}.left .wysija_image .wysija_tools,.center .wysija_image .wysija_tools,.left.wysija_gallery .wysija_tools,.center.wysija_gallery .wysija_tools{left:0;text-align:left}.right .wysija_image .wysija_tools,.right.wysija_gallery .wysija_tools{right:0;text-align:right}.wysija_text .wysija_tools{position:absolute;height:20px;line-height:20px;top:0;right:0;margin:0;z-index:1000;width:20px}.wysija_text.alone .wysija_tools{display:none}.wysija_gallery .wysija_tools li,.wysija_image .wysija_tools li{float:left;width:25px;height:34px}.wysija_text .wysija_tools li{float:left;width:20px;height:20px}.wysija_gallery .wysija_tools a,.wysija_image .wysija_tools a,.wysija_text .wysija_tools a{background-color:#dfdfdf;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#bbb), to(#eee));float:left;width:20px;height:20px;margin:5px 3px 0 0;-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;border:1px solid #ccc;z-index:1010;position:relative}.wysija_text .wysija_tools a{margin:0}.wysija_gallery .wysija_tools a:hover,.wysija_image .wysija_tools a:hover,.wysija_text .wysija_tools a:hover{background-color:#ddd;border-color:#909090}.wysija_gallery .wysija_tools a.active,.wysija_image .wysija_tools a.active,.wysija_text .wysija_tools a.active{background-color:#ddd;background-image:-moz-linear-gradient(center bottom, #eee, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#eee), to(#bbb));border-color:#909090}.wysija_controls a span,.wysija_gallery .wysija_tools a span,.wysija_image .wysija_tools a span,.wysija_text .wysija_tools a span,.wj_content a span{display:block;height:20px;width:20px}.wysija_controls span input{margin:2px 0 0 0;padding:0;color:transparent}.alignment-left span{background:url(../img/controls/icons.png) no-repeat 0 0}.alignment-left.active span,.alignment-left:hover span{background:url(../img/controls/icons.png) no-repeat 0 -20px}.alignment-center span{background:url(../img/controls/icons.png) no-repeat -20px 0}.alignment-center.active span,.alignment-center:hover span{background:url(../img/controls/icons.png) no-repeat -20px -20px}.alignment-right span{background:url(../img/controls/icons.png) no-repeat -40px 0}.alignment-right.active span,.alignment-right:hover span{background:url(../img/controls/icons.png) no-repeat -40px -20px}.add-link span{background:url(../img/controls/icons.png) no-repeat -60px 0}.add-link.active span,.add-link:hover span{background:url(../img/controls/icons.png) no-repeat -60px -20px}.remove-link span{background:url(../img/controls/icons.png) no-repeat -80px 0}.remove-link.active span,.remove-link:hover span{background:url(../img/controls/icons.png) no-repeat -80px -20px}.remove span{background:url(../img/controls/icons.png) no-repeat -100px 0}.remove.active span,.remove:hover span{background:url(../img/controls/icons.png) no-repeat -100px -20px}.handle span{background:url(../img/controls/grip-handle.png) no-repeat;cursor:move;width:40px !important}.duplicate span{background:url(../img/controls/icons.png) no-repeat -140px 0}.duplicate.active span,.duplicate:hover span{background:url(../img/controls/icons.png) no-repeat -140px -20px}.settings span{background:url(../img/controls/icons.png) no-repeat -160px 0}.settings.active span,.settings:hover span{background:url(../img/controls/icons.png) no-repeat -160px -20px}.icon-plus span{background:url(../img/controls/icons.png) no-repeat -200px 0}.icon-plus.active span,.icon-plus:hover span{background:url(../img/controls/icons.png) no-repeat -200px -20px}.icon-minus span{background:url(../img/controls/icons.png) no-repeat -220px 0}.icon-minus.active span,.icon-minus:hover span{background:url(../img/controls/icons.png) no-repeat -220px -20px}.banner{color:#000;z-index:999;text-align:center;width:600px;position:absolute;top:0;right:0;left:0;bottom:0;white-space:nowrap;font-size:16px !important;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.banner .banner-message{margin:20px auto 0 auto}.banner .banner-icon{background:url(../img/controls/image-placeholder.png) no-repeat;padding:2px 0 0 28px}.banner .banner-notice{margin:10px auto 0 auto;font-size:12px;font-style:italic}#wysija_wrapper{padding:20px;width:600px;border:1px solid #ccc;position:relative;background-color:#fff;-webkit-box-shadow:0 0 4px rgba(0,0,0,0.2),inset 0 0 20px rgba(0,0,0,0.1);-moz-box-shadow:0 0 4px rgba(0,0,0,0.2),inset 0 0 20px rgba(0,0,0,0.1);box-shadow:0 0 5px rgba(0,0,0,0.2),inset 0 0 20px rgba(0,0,0,0.1)}#wysija_wrapper:before,#wysija_wrapper:after{position:absolute;width:40%;height:10px;content:' ';left:12px;bottom:12px;background:transparent;-webkit-transform:skew(-5deg) rotate(-5deg);-moz-transform:skew(-5deg) rotate(-5deg);-ms-transform:skew(-5deg) rotate(-5deg);-o-transform:skew(-5deg) rotate(-5deg);transform:skew(-5deg) rotate(-5deg);-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.3);-moz-box-shadow:0 6px 12px rgba(0,0,0,0.3);box-shadow:0 6px 12px rgba(0,0,0,0.3);z-index:-1}#wysija_wrapper:after{left:auto;right:12px;-webkit-transform:skew(5deg) rotate(5deg);-moz-transform:skew(5deg) rotate(5deg);-ms-transform:skew(5deg) rotate(5deg);-o-transform:skew(5deg) rotate(5deg);transform:skew(5deg) rotate(5deg)}body.rtl #wysija_wrapper{right:603px !important}#wysija_container{margin:30px 0 0 0;width:600px;border-collapse:collapse;width:600px;margin:0;padding:0}#wysija_header{padding:0}#wysija_body{vertical-align:top;padding:0}#wysija_footer{padding:0}#wysija_block_placeholder{height:0;padding:0;margin:0}.block_placeholder,.text_placeholder{font-weight:bold;height:0;overflow:hidden;line-height:30px;text-align:center;border:0 none;width:598px;z-index:9500;margin:0 auto;text-indent:-9999px}.wysija_block .block_placeholder,.wysija_block .text_placeholder,.wysija_block .image_placeholder{margin:0}.image_placeholder{margin:1px 0 0 1px}.hover .image_placeholder{margin:0}.wysija_content .empty.editable{font-size:13px;line-height:30px}.wysija_image.empty{height:0;width:0;margin:0 !important;z-index:-1;overflow:hidden}.wysija_image.empty.active{height:auto}.wysija_image.active{background:url(../img/controls/image-placeholder.png) no-repeat center center #f5f5f5;border:1px dashed #dfdfdf}#wysija_header .wysija_image.empty,#wysija_footer .wysija_image.empty{background-image:none;height:auto}#wysija_header .wysija_image.active,#wysija_footer .wysija_image.active{border:0 none}.block_placeholder.active,.text_placeholder.active{text-indent:0;border:1px dashed #dfdfdf;background-color:#f5f5f5;display:block;overflow:auto;height:30px}.image_placeholder.empty.active{display:block}.block_placeholder.hover,.text_placeholder.hover,.image_hover .wysija_image{background-color:#0074a2;border-color:#0074a2;color:#fff !important}.image_placeholder.active{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=25)";filter:alpha(opacity=25);-moz-opacity:0.25;opacity:0.25;z-index:9501}.wysija_image.empty.active,.wysija_text.empty.active{display:block;margin:0}#wysija_header .wysija_image.active,#wysija_footer .wysija_image.active{left:0;top:0;right:0}.wysija_header .image_placeholder,.wysija_footer .image_placeholder{border:0 none !important;margin:0 !important}.wysija_header .image_placeholder.active,.wysija_footer .image_placeholder.active{border:0 none !important}.wysija_options{display:none}.wysija_content .wysija_image{margin:0 auto 15px auto;cursor:move}.wysija_header .wysija_content.left .wysija_image,.wysija_header .wysija_content.right .wysija_image,.wysija_footer .wysija_content.left .wysija_image,.wysija_footer .wysija_content.right .wysija_image{margin:0 0 0 0 !important}.wysija_content.center .image_placeholder.active{margin:0 0 -2px 0}.wysija_header .wysija_content.center .wysija_image,.wysija_footer .wysija_content.center .wysija_image{margin:0 auto !important}.wysija_header .wysija_content.center .image_placeholder.active,.wysija_footer .wysija_content.center .image_placeholder.active{margin:0}.wysija_block .wysija_content.center .wysija_image.empty.active{margin-bottom:5px !important}.wysija_content.left{float:none}.wysija_gallery.left{float:left}.wysija_content.left .wysija_image{float:left;margin:0 15px 5px 0}.wysija_content.left .wysija_image.active{margin:0 13px 3px 0}.wysija_content.left .wysija_image.empty.active{margin:0 15px 5px 0 !important}.wysija_gallery.right{float:right}.wysija_content.right .wysija_image{float:right;margin:0 0 5px 15px}.wysija_content.right .wysija_image.active{margin:0 0 3px 13px}.wysija_content.right .wysija_image.empty.active{margin:0 0 5px 15px !important}.wysija_content .wysija_image.alone{margin:0 !important}.wysija_content.center .wysija_image.alone{margin:0 auto !important}.wysija_image{position:relative;z-index:999}.wysija_image .url-info{position:absolute;bottom:0;left:0;font-size:0.7em;padding:2px;color:#000;background-color:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8}.wysija_content.left .wysija_image .url-info{right:0;left:auto}.wysija_text{position:relative;z-index:998}.wysija_text.editing{border:1px solid #dfdfdf}.wysija_content.left .wysija_text.editing{float:left}.wysija_text .editable:hover{cursor:pointer}#wysija_toolbar{left:657px;position:absolute;top:-1000px;width:295px}#wysija_toolbar .wysija_toolbar_tabs{border-bottom:1px solid #dfdfdf;line-height:0}#wysija_toolbar .wysija_toolbar_tabs li,#wysija_toolbar .wysija_toolbar_tabs a{margin:0;height:30px;line-height:30px;padding:0;display:-moz-inline-box;display:inline-block;*display:inline;*float:left;outline:0 none}#wysija_toolbar .wysija_toolbar_tabs a{outline:0 none;text-decoration:none;color:#a6a6a6}#wysija_toolbar .wysija_toolbar_tabs li{margin:0 0 1px 0}#wysija_toolbar .wysija_toolbar_tabs a{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;background-color:#F5F5F5;background-image:-moz-linear-gradient(center top, #f9f9f9, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F5F5F5', endColorstr='#F9F9F9');background:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f5f5f5));border:1px solid #DFDFDF;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;-khtml-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;box-shadow:0 1px 0 #FFFFFF inset;padding:0 7px}#wysija_toolbar .wysija_toolbar_tabs a:hover{background-color:#eee}#wysija_toolbar .wysija_toolbar_tabs a.selected{color:#000;border-bottom:0 none;background:#fcfcfc;filter:none;padding-bottom:1px}#wysija_toolbar .wysija_toolbar_tabs,#wysija_toolbar .wj_content,#wysija_toolbar .wj_images,#wysija_toolbar .wj_styles,#wysija_toolbar .wj_themes{position:relative;z-index:9998;margin:0}#wysija_toolbar #wysija_notices span{font-size:12px !important;font-weight:normal !important}.wj_content{background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:0 0 10px 0}.wj_content li{padding:10px 10px 0 10px;position:relative}.wj_content li.notice{font-style:italic;font-size:11px;margin:0 !important;border:0 none !important;background:none !important}.wj_images{z-index:999;background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:9px}.wj_images ul{height:360px;overflow:auto;margin:0;padding:0}.wj_images li{float:left;width:80px;margin:2px;height:80px;overflow:hidden;position:relative;border:1px solid #dfdfdf}.wj_images li img{max-height:150px;width:80px}.wj_images li a{float:left;display:block;height:80px;width:80px}.wj_button{text-align:center;width:265px;margin:20px 0;height:30px;line-height:30px}.wj_images img{cursor:move;max-width:275px}#wysija-upload-browse,#wysija-themes-browse{float:none}.wj_images #wj_images_preview{border:3px solid #dfdfdf;position:absolute;right:295px;top:0;background-color:#fff}.wj_styles{z-index:999;background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:9px}.wj_styles p{margin:10px 0}.wj_styles .preview{width:20px;float:none !important;height:20px;vertical-align:middle;display:-moz-inline-box;display:inline-block;*display:inline;*float:left;border:1px solid #333}.wj_styles input,.wj_styles select{height:20px;border:0 none;border:1px solid #CCC;margin:0 3px 0 0 !important;padding:0 !important;vertical-align:middle;line-height:20px;font-size:12px}.wj_styles #aUnderlineInput{margin:0 0 0 10px !important}.wj_styles select{width:75px}.wj_styles input.checkbox,.wj_styles input[type=checkbox]{border:0 none !important}.wj_styles input.color{width:55px;padding:0 0 0 2px !important}.wj_styles input.color.disabled{background-color:#eee !important;color:#eee !important}.wj_styles select.small-size{width:50px}.wj_styles select.type{width:68px}.wj_styles select.size{width:58px}.wj_styles form label{cursor:normal;margin:0 0 0 3px}.wj_themes{z-index:999;background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:9px}.wj_themes ul{height:360px;overflow:auto;margin:0;padding:0}.wj_themes li{float:left;width:80px;margin:2px;height:80px;overflow:hidden;border:1px solid #dfdfdf;position:relative}.wj_themes li img{max-height:150px;width:80px}.wj_themes li a{display:block}.wj_themes #wj_themes_preview{border:3px solid #dfdfdf;position:absolute;right:295px;top:0;background-color:#fff}.wysija_widget{width:275px;height:25px;line-height:25px;z-index:9999 !important}.wj_content a.wysija_item,.wysija_widget{height:25px;line-height:25px;background-color:#F5F5F5;background-image:-moz-linear-gradient(center top, #f9f9f9, #ececec);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#ececec');background:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));border:1px solid #DFDFDF;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;box-shadow:0 1px 0 #FFFFFF inset;display:block;font-size:12px;font-weight:bold;padding:0 0 0 7px;cursor:move;color:#222;text-shadow:0 1px 0 #FFFFFF}.wj_content a.wysija_item.disabled{cursor:help;color:#cccccc}.wysija_item_settings{position:absolute;right:15px;top:13px}.wysija_widget.image{z-index:9999 !important;height:auto !important;width:150px !important;background:none !important;border:0 none !important;box-shadow:none !important;border-radius:0 !important;padding:0 !important}#wysija_notices{z-index:20000;position:relative;left:0;top:0;padding:5px;border:1px solid #dfdfdf;border-top:0 none}#wysija_notices.notice{background-color:#FFFFE0;border-color:#E6DB55;z-index:9999}#wysija_notices.error{background-color:#FFEBE8;border-color:#CC0000}#wysija_notice_msg{font-size:14px;font-weight:bold}.align-center{text-align:center}.align-left{text-align:left}.align-right{text-align:right}.align-justify{text-align:justify}.wysija_gallery{position:relative}.wysija_gallery.center{margin:0 auto}.wysija_gallery.right{text-align:right}.wysija_gallery.left{text-align:left}.wysija_row{width:100%}.wysija_cell{float:left;text-align:center}.resize-controls{position:absolute;left:0;right:0;top:0;bottom:0;z-index:99000;border:1px dashed #ccc}.resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;border:0 none;z-index:1001;cursor:se-resize;background:transparent url(../img/controls/resize-se.png) no-repeat scroll right bottom}.resize-info{position:absolute;bottom:0;left:4px;font-size:0.8em;padding:0;margin:0;text-shadow:0 1px 0 #F7F5F2;white-space:nowrap}.right .resize-handle{position:absolute;bottom:0;left:0;width:20px;height:20px;border:0 none;z-index:1001;cursor:sw-resize;background:transparent url(../img/controls/resize-sw.png) no-repeat scroll left bottom}.right .resize-info{left:auto !important;right:4px}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{z-index:1001 !important}.wysija_divider{margin:0 auto;width:564px}.wysija_block.auto-post.hover .wysija_content *,.wysija_block.auto-post.hover .wysija_divider{z-index:1000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";filter:alpha(opacity=30);-moz-opacity:0.3;opacity:0.3}.wysija_auto-post .wysija_divider{text-align:center;margin:0 !important;width:100% !important}.wysija_auto-post .nopost{height:100px}.wysija_auto-post .nopost p{margin:25px 0 0 0}.wysija_settings{left:10px;position:absolute;top:0;z-index:1000}.wysija_settings a{background-color:#F5F5F5;background-image:-moz-linear-gradient(center top, #f9f9f9, #ececec);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#ececec');background:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));border:1px solid #DFDFDF;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;box-shadow:0 1px 0 #FFFFFF inset;font-size:12px;font-weight:normal;cursor:pointer;color:#222;text-shadow:0 1px 0 #FFFFFF;text-decoration:none;display:block;padding:5px 5px 3px 27px}.wysija_settings a span{width:20px;height:20px;position:absolute;top:3px;left:5px}#wysija_toggle_images{position:absolute;top:5px;right:5px;z-index:1000;width:73px;height:33px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);-moz-opacity:0.5;opacity:0.5;background-color:#fff}#wysija_toggle_images.on{background:url(../img/controls/images-toggle-on.png) no-repeat}#wysija_toggle_images.off{background:url(../img/controls/images-toggle-off.png) no-repeat}#wysija_toggle_images:hover{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1.0;opacity:1.0}.wysija_block.auto-post{padding:0 !important}.wysija_auto-post .wysija_content{padding:10px 17px !important}.wysija_auto-post .wysija_content:after{content:".";display:block;height:0;clear:both;visibility:hidden}.wysija_auto-post .wysija_content{display:inline-table}* html .wysija_auto-post .wysija_content{height:1%}.wysija_auto-post .wysija_content{display:block}.wysija_auto-post .wysija_divider{padding:9px 0 !important}.wysija_block.auto-post.hover .wysija_content{padding:10px 17px !important}.wysija_auto-post .wysija_text{pointer-events:none;cursor:default}.wysija_auto-post .wysija_image{pointer-events:none;cursor:default}.auto-post.hover .wysija_content:last-child{padding:9px 17px 9px 17px !important}.wysija_auto-post .loading{padding:10px 17px;font-size:10px}#wysija_popup_overlay{background-color:#000;height:100%;left:0;position:fixed;top:0;width:100%;z-index:999989;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75);-moz-opacity:0.75;opacity:0.75}#wysija_popup_overlay.loading{background:url(../img/popup/loading.gif) no-repeat 50% 50% #000}#wysija_popup{position:absolute;top:0;left:0;width:600px;height:400px;background-color:#fff;z-index:999999;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;-moz-box-shadow:#000 0 4px 30px;-webkit-box-shadow:#000 0 4px 30px;-khtml-box-shadow:#000 0 4px 30px;box-shadow:#000 0 4px 30px;border:1px solid #555}#wysija_popup_content{padding:0;overflow:hidden;position:relative}#wysija_popup_title{background-color:#222;border:1px solid #333;height:27px;margin:0;padding:0}#wysija_popup_title h3{color:#cfcfcf;font-size:12px;font-weight:normal;margin:6px 0 0 10px;padding:0;float:left;font:12px "Lucida Grande", Verdana, Arial, sans-serif}#wysija_popup_iframe{border:0 none;outline:0 none}#wysija_popup_close{background:url(../img/popup/close.png) no-repeat;height:15px;width:15px;background-color:#333;display:block;float:right;margin:6px 10px 0 0}.mpoet-ui .wysija_item_settings{text-decoration:none}.mpoet-ui .settings span{background:none;color:#999}.mpoet-ui .wysija_item_settings:hover .dashicons-admin-generic:before,.mpoet-ui .settings:hover .dashicons-admin-generic:before{color:#2ea2cc}.wp_themeSkin .mceToolbar{margin:0 !important;padding:0 !important}
|
1 |
+
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-table}* html .clearfix{height:1%}.clearfix{display:block}.hidden{display:none}strong{font-weight:bold}img{vertical-align:middle}:focus{outline:0 !important}.inline{display:-moz-inline-box;display:inline-block;*display:inline;*float:left}.wysija_tools li,.wysija_tools dd{margin:0 !important}.wysija_controls li{margin:0 0 0 3px !important}#wysija_items{position:fixed;width:275px;right:20px;top:20px;z-index:999}#wysija_items li{line-height:100px;height:100px;outline:1px solid #ccc;text-align:center}.wysija_items li.disabled{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";filter:alpha(opacity=20);-moz-opacity:0.2;opacity:0.2}.wysija_items li.active a{height:100px;cursor:pointer;display:block}.wysija_header,.wysija_footer{position:relative;display:inline-table;display:block;height:1%;margin:0;padding:0;z-index:98}.wysija_header:after,.wysija_footer:after{content:".";display:block;height:0;clear:both;visibility:hidden}.wysija_block{position:relative;margin:0 10px;padding:10px 18px 10px 18px;display:inline-table;display:block;height:1%;margin:0;z-index:98}.wysija_block.dragging,.wysija_header.dragging,.wysija_footer.dragging{z-index:99000}.wysija_block:after{content:".";display:block;height:0;clear:both;visibility:hidden}.wysija_block.hover{border:1px dashed #bbb;margin:0 0 0 0;padding:9px 17px 9px 17px}.wysija_block.static{padding:0;margin:0}.wysija_block .wysija_controls{background-color:#dfdfdf;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#bbb), to(#eee));-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;border:1px solid #ccc;position:absolute;margin:0;padding:0;width:598px;height:20px;left:-1px;right:0;top:-22px;width:100%}.wysija_block .wysija_controls .handle{width:600px}.wysija_block .wysija_controls li{float:left;width:20px;height:20px}.wysija_block .wysija_controls a{cursor:pointer;float:left;font-size:120%;font-weight:bold;height:20px;line-height:20px;text-align:center;width:20px;color:#000}.wysija_block .handle_container,.wysija_block .handle_container a{float:none;width:40px}.wysija_block .handle_container{left:280px;top:0;position:absolute}.wysija_gallery .wysija_tools,.wysija_image .wysija_tools{position:absolute;height:34px;line-height:34px;margin:0;width:152px;top:-36px;z-index:1010;background-color:#dfdfdf;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#bbb), to(#eee));-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;border:1px solid #ccc;padding:0 0 0 5px}.wysija_gallery .wysija_tools{width:102px}.left .wysija_image .wysija_tools,.center .wysija_image .wysija_tools,.left.wysija_gallery .wysija_tools,.center.wysija_gallery .wysija_tools{left:0;text-align:left}.right .wysija_image .wysija_tools,.right.wysija_gallery .wysija_tools{right:0;text-align:right}.wysija_text .wysija_tools{position:absolute;height:20px;line-height:20px;top:0;right:0;margin:0;z-index:1000;width:20px}.wysija_text.alone .wysija_tools{display:none}.wysija_gallery .wysija_tools li,.wysija_image .wysija_tools li{float:left;width:25px;height:34px}.wysija_text .wysija_tools li{float:left;width:20px;height:20px}.wysija_gallery .wysija_tools a,.wysija_image .wysija_tools a,.wysija_text .wysija_tools a{background-color:#dfdfdf;background-image:-moz-linear-gradient(center bottom, #bbb, #eee);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#bbb), to(#eee));float:left;width:20px;height:20px;margin:5px 3px 0 0;-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;border:1px solid #ccc;z-index:1010;position:relative}.wysija_text .wysija_tools a{margin:0}.wysija_gallery .wysija_tools a:hover,.wysija_image .wysija_tools a:hover,.wysija_text .wysija_tools a:hover{background-color:#ddd;border-color:#909090}.wysija_gallery .wysija_tools a.active,.wysija_image .wysija_tools a.active,.wysija_text .wysija_tools a.active{background-color:#ddd;background-image:-moz-linear-gradient(center bottom, #eee, #bbb);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bbbbbb');background:-webkit-gradient(linear, left bottom, left top, from(#eee), to(#bbb));border-color:#909090}.wysija_controls a span,.wysija_gallery .wysija_tools a span,.wysija_image .wysija_tools a span,.wysija_text .wysija_tools a span,.wj_content a span{display:block;height:20px;width:20px}.wysija_controls span input{margin:2px 0 0 0;padding:0;color:transparent}.alignment-left span{background:url(../img/controls/icons.png) no-repeat 0 0}.alignment-left.active span,.alignment-left:hover span{background:url(../img/controls/icons.png) no-repeat 0 -20px}.alignment-center span{background:url(../img/controls/icons.png) no-repeat -20px 0}.alignment-center.active span,.alignment-center:hover span{background:url(../img/controls/icons.png) no-repeat -20px -20px}.alignment-right span{background:url(../img/controls/icons.png) no-repeat -40px 0}.alignment-right.active span,.alignment-right:hover span{background:url(../img/controls/icons.png) no-repeat -40px -20px}.add-link span{background:url(../img/controls/icons.png) no-repeat -60px 0}.add-link.active span,.add-link:hover span{background:url(../img/controls/icons.png) no-repeat -60px -20px}.remove-link span{background:url(../img/controls/icons.png) no-repeat -80px 0}.remove-link.active span,.remove-link:hover span{background:url(../img/controls/icons.png) no-repeat -80px -20px}.remove span{background:url(../img/controls/icons.png) no-repeat -100px 0}.remove.active span,.remove:hover span{background:url(../img/controls/icons.png) no-repeat -100px -20px}.handle span{background:url(../img/controls/grip-handle.png) no-repeat;cursor:move;width:40px !important}.duplicate span{background:url(../img/controls/icons.png) no-repeat -140px 0}.duplicate.active span,.duplicate:hover span{background:url(../img/controls/icons.png) no-repeat -140px -20px}.settings span{background:url(../img/controls/icons.png) no-repeat -160px 0}.settings.active span,.settings:hover span{background:url(../img/controls/icons.png) no-repeat -160px -20px}.icon-plus span{background:url(../img/controls/icons.png) no-repeat -200px 0}.icon-plus.active span,.icon-plus:hover span{background:url(../img/controls/icons.png) no-repeat -200px -20px}.icon-minus span{background:url(../img/controls/icons.png) no-repeat -220px 0}.icon-minus.active span,.icon-minus:hover span{background:url(../img/controls/icons.png) no-repeat -220px -20px}.banner{color:#000;background-color:#fff;z-index:999;text-align:center;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70);-moz-opacity:0.7;opacity:0.7;width:600px;position:absolute;top:0;right:0;left:0;bottom:0;white-space:nowrap;font-size:16px !important}.banner .banner-message{margin:20px auto 0 auto}.banner .banner-notice{margin:10px auto 0 auto;font-size:12px;font-style:italic}#wysija_wrapper{padding:20px;width:600px;border:1px solid #ccc;position:relative;background-color:#fff;-webkit-box-shadow:0 0 4px rgba(0,0,0,0.2),inset 0 0 20px rgba(0,0,0,0.1);-moz-box-shadow:0 0 4px rgba(0,0,0,0.2),inset 0 0 20px rgba(0,0,0,0.1);box-shadow:0 0 5px rgba(0,0,0,0.2),inset 0 0 20px rgba(0,0,0,0.1)}#wysija_wrapper:before,#wysija_wrapper:after{position:absolute;width:40%;height:10px;content:' ';left:12px;bottom:12px;background:transparent;-webkit-transform:skew(-5deg) rotate(-5deg);-moz-transform:skew(-5deg) rotate(-5deg);-ms-transform:skew(-5deg) rotate(-5deg);-o-transform:skew(-5deg) rotate(-5deg);transform:skew(-5deg) rotate(-5deg);-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.3);-moz-box-shadow:0 6px 12px rgba(0,0,0,0.3);box-shadow:0 6px 12px rgba(0,0,0,0.3);z-index:-1}#wysija_wrapper:after{left:auto;right:12px;-webkit-transform:skew(5deg) rotate(5deg);-moz-transform:skew(5deg) rotate(5deg);-ms-transform:skew(5deg) rotate(5deg);-o-transform:skew(5deg) rotate(5deg);transform:skew(5deg) rotate(5deg)}body.rtl #wysija_wrapper{right:603px !important}#wysija_container{margin:30px 0 0 0;width:600px;border-collapse:collapse;width:600px;margin:0;padding:0}#wysija_header{padding:0}#wysija_body{vertical-align:top;padding:0}#wysija_footer{padding:0}.empty{display:none}.empty.active.wysija_image,.empty.active.wysija_text{display:block}#wysija_block_placeholder{height:0;padding:0;margin:0}#block_placeholder{margin:0;height:0}#block_placeholder.active{margin:18px 18px 0px 18px;display:block;height:30px}.block_placeholder{border:0 none;z-index:9500;margin:0;position:relative;left:0;top:-10px;width:562px}.wysija_block .block_placeholder,.wysija_block .text_placeholder,.wysija_block .image_placeholder{margin:0}.image_placeholder{margin:1px 0 0 1px}.wysija_block .block_placeholder.active,.wysija_block .text_placeholder.active{height:30px}.block_placeholder,.text_placeholder,.image_placeholder.empty{transition:opacity .25s, height .25s linear;-moz-transition:opacity .25s, height .25s linear;-webkit-transition:opacity .25s, height .25s linear;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;height:0;margin:0}.image_placeholder.active{border:1px dashed #bbb;background-color:#f5f5f5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);-moz-opacity:0.5;opacity:0.5;transition:opacity .25s;-moz-transition:opacity .25s;-webkit-transition:opacity .25s}.block_placeholder.active,.text_placeholder.active,.image_placeholder.empty.active{border:1px dashed #bbb;background-color:#f5f5f5;display:block;transition:opacity .25s, height .25s linear;-moz-transition:opacity .25s, height .25s linear;-webkit-transition:opacity .25s, height .25s linear;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);-moz-opacity:0.5;opacity:0.5}.wysija_content .empty.editable{margin:0 !important}.block_placeholder.active,.wysija_content.center .text_placeholder.active{height:30px}.image_placeholder.empty.active{height:80px;width:80px}.wysija_image.empty.active{width:80px}.wysija_content.right .wysija_image.empty.active{margin-right:3px}.auto-post .block_placeholder.active{margin:0 0 0 18px}.block_placeholder.hover,.text_placeholder.hover,.image_placeholder.hover,.image_placeholder.empty.hover{background-color:#e5e5e5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1.0;opacity:1.0}.text_placeholder.hover{display:block}#wysija_header .wysija_image.active,#wysija_footer .wysija_image.active{left:0;top:0;right:0}.wysija_header .image_placeholder,.wysija_footer .image_placeholder{border:0 none !important;margin:0 !important}.wysija_header .image_placeholder.active,.wysija_footer .image_placeholder.active{border:0 none !important}.wysija_options{display:none}.wysija_content .wysija_image,.wysija_content.center .wysija_image{margin:0 auto 15px auto;cursor:move}.wysija_content.center .image_placeholder.active{margin:0 0 -2px 0}.wysija_header .wysija_content.center .wysija_image,.wysija_footer .wysija_content.center .wysija_image{margin:0 auto}.wysija_header .wysija_content.left .wysija_image,.wysija_header .wysija_content.right .wysija_image,.wysija_footer .wysija_content.left .wysija_image,.wysija_footer .wysija_content.right .wysija_image{margin:0 0 0 0}.wysija_header .wysija_content.center .image_placeholder.active,.wysija_footer .wysija_content.center .image_placeholder.active{margin:0}.wysija_content.left{float:none}.wysija_gallery.left{float:left}.wysija_content.left .wysija_image{float:left;margin:0 15px 5px 0}.wysija_gallery.right{float:right}.wysija_content.right .wysija_image{float:right;margin:0 0 5px 15px}.wysija_content .wysija_image.alone{margin:0 !important}.wysija_content.center .wysija_image.alone{margin:0 auto !important}.wysija_content.left .wysija_image.active{margin:0 13px 3px 0;left:-1px;top:-1px}.wysija_content.center .wysija_image.active{left:-1px;top:-1px}.wysija_content.right .wysija_image.active{margin:0 0 3px 13px;top:-1px;right:-1px}.wysija_image{position:relative;z-index:999}.wysija_image .url-info{position:absolute;bottom:0;left:0;font-size:0.7em;padding:2px;color:#000;background-color:#fff;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8}.wysija_content.left .wysija_image .url-info{right:0;left:auto}.wysija_text{position:relative;z-index:998}.wysija_text.editing{border:1px solid #dfdfdf}.wysija_content.left .wysija_text.editing{float:left}.wysija_text .editable:hover{cursor:pointer}#wysija_toolbar{left:657px;position:absolute;top:-1000px;width:295px}#wysija_toolbar .wysija_toolbar_tabs{border-bottom:1px solid #dfdfdf;line-height:0}#wysija_toolbar .wysija_toolbar_tabs li,#wysija_toolbar .wysija_toolbar_tabs a{margin:0;height:30px;line-height:30px;padding:0;display:-moz-inline-box;display:inline-block;*display:inline;*float:left;outline:0 none}#wysija_toolbar .wysija_toolbar_tabs a{outline:0 none;text-decoration:none;color:#a6a6a6}#wysija_toolbar .wysija_toolbar_tabs li{margin:0 0 1px 0}#wysija_toolbar .wysija_toolbar_tabs a{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;background-color:#F5F5F5;background-image:-moz-linear-gradient(center top, #f9f9f9, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F5F5F5', endColorstr='#F9F9F9');background:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f5f5f5));border:1px solid #DFDFDF;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;-khtml-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;box-shadow:0 1px 0 #FFFFFF inset;padding:0 7px}#wysija_toolbar .wysija_toolbar_tabs a:hover{background-color:#eee}#wysija_toolbar .wysija_toolbar_tabs a.selected{color:#000;border-bottom:0 none;background:#fcfcfc;filter:none;padding-bottom:1px}#wysija_toolbar .wysija_toolbar_tabs,#wysija_toolbar .wj_content,#wysija_toolbar .wj_images,#wysija_toolbar .wj_styles,#wysija_toolbar .wj_themes{position:relative;z-index:9998;margin:0}#wysija_toolbar #wysija_notices span{font-size:12px !important;font-weight:normal !important}.wj_content{background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:0 0 10px 0}.wj_content li{padding:10px 10px 0 10px;position:relative}.wj_content li.notice{font-style:italic;font-size:11px;margin:0 !important;border:0 none !important;background:none !important}.wj_images{z-index:999;background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:9px}.wj_images ul{height:360px;overflow:auto;margin:0;padding:0}.wj_images li{float:left;width:80px;margin:2px;height:80px;overflow:hidden;position:relative;border:1px solid #dfdfdf}.wj_images li img{max-height:150px;width:80px}.wj_images li a{float:left;display:block;height:80px;width:80px}.wj_button{text-align:center;width:265px;margin:20px 0;height:30px;line-height:30px}.wj_images img{cursor:move;max-width:275px}#wysija-upload-browse,#wysija-themes-browse{float:none}.wj_images #wj_images_preview{border:3px solid #dfdfdf;position:absolute;right:295px;top:0;background-color:#fff}.wj_styles{z-index:999;background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:9px}.wj_styles p{margin:10px 0}.wj_styles .preview{width:20px;float:none !important;height:20px;vertical-align:middle;display:-moz-inline-box;display:inline-block;*display:inline;*float:left;border:1px solid #333}.wj_styles input,.wj_styles select{height:20px;border:0 none;border:1px solid #CCC;margin:0 3px 0 0 !important;padding:0 !important;vertical-align:middle;line-height:20px;font-size:12px}.wj_styles #aUnderlineInput{margin:0 0 0 10px !important}.wj_styles select{width:75px}.wj_styles input.checkbox,.wj_styles input[type=checkbox]{border:0 none !important}.wj_styles input.color{width:55px;padding:0 0 0 2px !important}.wj_styles input.color.disabled{background-color:#eee !important;color:#eee !important}.wj_styles select.small-size{width:50px}.wj_styles select.type{width:68px}.wj_styles select.size{width:58px}.wj_styles form label{cursor:normal;margin:0 0 0 3px}.wj_themes{z-index:999;background-color:#fcfcfc;border:1px solid #dfdfdf;border-top:0 none;padding:9px}.wj_themes ul{height:360px;overflow:auto;margin:0;padding:0}.wj_themes li{float:left;width:80px;margin:2px;height:80px;overflow:hidden;border:1px solid #dfdfdf;position:relative}.wj_themes li img{max-height:150px;width:80px}.wj_themes li a{display:block}.wj_themes #wj_themes_preview{border:3px solid #dfdfdf;position:absolute;right:295px;top:0;background-color:#fff}.wysija_widget{width:275px;height:25px;line-height:25px;z-index:9999 !important}.wj_content a.wysija_item,.wysija_widget{height:25px;line-height:25px;background-color:#F5F5F5;background-image:-moz-linear-gradient(center top, #f9f9f9, #ececec);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#ececec');background:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));border:1px solid #DFDFDF;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;box-shadow:0 1px 0 #FFFFFF inset;display:block;font-size:12px;font-weight:bold;padding:0 0 0 7px;cursor:move;color:#222;text-shadow:0 1px 0 #FFFFFF}.wj_content a.wysija_item.disabled{cursor:help;color:#cccccc}.wysija_item_settings{position:absolute;right:15px;top:13px}.wysija_widget.image{z-index:9999 !important;height:auto !important;width:150px !important;background:none !important;border:0 none !important;box-shadow:none !important;border-radius:0 !important;padding:0 !important}#wysija_notices{z-index:20000;position:relative;left:0;top:0;padding:5px;border:1px solid #dfdfdf;border-top:0 none}#wysija_notices.notice{background-color:#FFFFE0;border-color:#E6DB55;z-index:9999}#wysija_notices.error{background-color:#FFEBE8;border-color:#CC0000}#wysija_notice_msg{font-size:14px;font-weight:bold}.align-center{text-align:center}.align-left{text-align:left}.align-right{text-align:right}.align-justify{text-align:justify}.wysija_gallery{position:relative}.wysija_gallery.center{margin:0 auto}.wysija_gallery.right{text-align:right}.wysija_gallery.left{text-align:left}.wysija_row{width:100%}.wysija_cell{float:left;text-align:center}.resize-controls{position:absolute;left:-1px;right:-1px;top:-1px;height:100%;z-index:99000;border:1px dashed #ccc}.resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;border:0 none;z-index:1001;cursor:se-resize;background:transparent url(../img/controls/resize-se.png) no-repeat scroll right bottom}.resize-info{position:absolute;bottom:0;left:0;font-size:0.8em;padding:2px;text-shadow:0 1px 0 #F7F5F2}.right .resize-handle{position:absolute;bottom:0;left:0;width:20px;height:20px;border:0 none;z-index:1001;cursor:sw-resize;background:transparent url(../img/controls/resize-sw.png) no-repeat scroll left bottom}.right .resize-info{position:absolute;bottom:0;right:0;text-align:right}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{z-index:1001 !important}.wysija_divider{margin:0 auto;width:564px}.wysija_block.auto-post.hover .wysija_content *,.wysija_block.auto-post.hover .wysija_divider{z-index:1000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";filter:alpha(opacity=30);-moz-opacity:0.3;opacity:0.3}.wysija_auto-post .wysija_divider{text-align:center;margin:0 !important;width:100% !important}.wysija_auto-post .nopost{height:100px}.wysija_auto-post .nopost p{margin:25px 0 0 0}.wysija_settings{left:10px;position:absolute;top:0;z-index:1000}.wysija_settings a{background-color:#F5F5F5;background-image:-moz-linear-gradient(center top, #f9f9f9, #ececec);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#ececec');background:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));border:1px solid #DFDFDF;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;box-shadow:0 1px 0 #FFFFFF inset;font-size:12px;font-weight:normal;cursor:pointer;color:#222;text-shadow:0 1px 0 #FFFFFF;text-decoration:none;display:block;padding:5px 5px 3px 27px}.wysija_settings a span{width:20px;height:20px;position:absolute;top:3px;left:5px}#wysija_toggle_images{position:absolute;top:5px;right:5px;z-index:1000;width:73px;height:33px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);-moz-opacity:0.5;opacity:0.5;background-color:#fff}#wysija_toggle_images.on{background:url(../img/controls/images-toggle-on.png) no-repeat}#wysija_toggle_images.off{background:url(../img/controls/images-toggle-off.png) no-repeat}#wysija_toggle_images:hover{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1.0;opacity:1.0}.wysija_block.auto-post{padding:0 !important}.wysija_auto-post .wysija_content{padding:10px 17px !important}.wysija_auto-post .wysija_content:after{content:".";display:block;height:0;clear:both;visibility:hidden}.wysija_auto-post .wysija_content{display:inline-table}* html .wysija_auto-post .wysija_content{height:1%}.wysija_auto-post .wysija_content{display:block}.wysija_auto-post .wysija_divider{padding:9px 0 !important}.wysija_block.auto-post.hover .wysija_content{padding:10px 17px !important}.wysija_auto-post .wysija_text{pointer-events:none;cursor:default}.wysija_auto-post .wysija_image{pointer-events:none;cursor:default}.auto-post.hover .wysija_content:last-child{padding:9px 17px 9px 17px !important}.wysija_auto-post .loading{padding:10px 17px;font-size:10px}#wysija_popup_overlay{background-color:#000;height:100%;left:0;position:fixed;top:0;width:100%;z-index:999989;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75);-moz-opacity:0.75;opacity:0.75}#wysija_popup_overlay.loading{background:url(../img/popup/loading.gif) no-repeat 50% 50% #000}#wysija_popup{position:absolute;top:0;left:0;width:600px;height:400px;background-color:#fff;z-index:999999;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;-moz-box-shadow:#000 0 4px 30px;-webkit-box-shadow:#000 0 4px 30px;-khtml-box-shadow:#000 0 4px 30px;box-shadow:#000 0 4px 30px;border:1px solid #555}#wysija_popup_content{padding:0;overflow:hidden;position:relative}#wysija_popup_title{background-color:#222;border:1px solid #333;height:27px;margin:0;padding:0}#wysija_popup_title h3{color:#cfcfcf;font-size:12px;font-weight:normal;margin:6px 0 0 10px;padding:0;float:left;font:12px "Lucida Grande", Verdana, Arial, sans-serif}#wysija_popup_iframe{border:0 none;outline:0 none}#wysija_popup_close{background:url(../img/popup/close.png) no-repeat;height:15px;width:15px;background-color:#333;display:block;float:right;margin:6px 10px 0 0}.debug-line{position:absolute;left:0;top:0;display:block;height:1px;width:100%}.debug-line.red{background-color:#f00}.debug-line.green{background-color:#0f0}.debug-line.blue{background-color:#00f}.mpoet-ui .wysija_item_settings{text-decoration:none}.mpoet-ui .settings span{background:none;color:#999}.mpoet-ui .wysija_item_settings:hover .dashicons-admin-generic:before,.mpoet-ui .settings:hover .dashicons-admin-generic:before{color:#2ea2cc}
|
helpers/articles.php
CHANGED
@@ -6,19 +6,6 @@ class WYSIJA_help_articles extends WYSIJA_object {
|
|
6 |
|
7 |
}
|
8 |
|
9 |
-
function stripShortcodes($content) {
|
10 |
-
if(strlen(trim($content)) === 0) {
|
11 |
-
return '';
|
12 |
-
}
|
13 |
-
// remove captions
|
14 |
-
$content = preg_replace("/\[caption.*?\](.*<\/a>)(.*?)\[\/caption\]/", '$1', $content);
|
15 |
-
|
16 |
-
// remove other shortcodes
|
17 |
-
$content = preg_replace('/\[[^\[\]]*\]/', '', $content);
|
18 |
-
|
19 |
-
return $content;
|
20 |
-
}
|
21 |
-
|
22 |
function convertPostToBlock($post, $params = array()) {
|
23 |
|
24 |
// defaults
|
@@ -48,8 +35,8 @@ class WYSIJA_help_articles extends WYSIJA_object {
|
|
48 |
if(!empty($post['post_excerpt'])) {
|
49 |
$content = $post['post_excerpt'];
|
50 |
} else {
|
51 |
-
//
|
52 |
-
$post['post_content'] =
|
53 |
|
54 |
// if excerpt is empty then try to find the "more" tag
|
55 |
$excerpts = explode('<!--more-->', $post['post_content']);
|
@@ -71,8 +58,8 @@ class WYSIJA_help_articles extends WYSIJA_object {
|
|
71 |
// remove images
|
72 |
$content = preg_replace('/<img[^>]+./','', $content);
|
73 |
|
74 |
-
//
|
75 |
-
$content =
|
76 |
|
77 |
// remove wysija nl shortcode
|
78 |
$content= preg_replace('/\<div class="wysija-register">(.*?)\<\/div>/','',$content);
|
@@ -244,9 +231,7 @@ class WYSIJA_help_articles extends WYSIJA_object {
|
|
244 |
$content = '';
|
245 |
|
246 |
// get categories
|
247 |
-
|
248 |
-
$helper_wp_tools = WYSIJA::get('wp_tools', 'helper');
|
249 |
-
$categories = $helper_wp_tools->get_post_categories($post);
|
250 |
|
251 |
if(empty($categories) === false) {
|
252 |
// check if the user specified a label to be displayed before the author's name
|
@@ -254,7 +239,13 @@ class WYSIJA_help_articles extends WYSIJA_object {
|
|
254 |
$content = stripslashes($params['category_label']).' ';
|
255 |
}
|
256 |
|
257 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
}
|
259 |
|
260 |
return $content;
|
6 |
|
7 |
}
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
function convertPostToBlock($post, $params = array()) {
|
10 |
|
11 |
// defaults
|
35 |
if(!empty($post['post_excerpt'])) {
|
36 |
$content = $post['post_excerpt'];
|
37 |
} else {
|
38 |
+
// remove shortcodes before getting the excerpt
|
39 |
+
$post['post_content'] = preg_replace('/\[[^\[\]]*\]/', '', $post['post_content']);
|
40 |
|
41 |
// if excerpt is empty then try to find the "more" tag
|
42 |
$excerpts = explode('<!--more-->', $post['post_content']);
|
58 |
// remove images
|
59 |
$content = preg_replace('/<img[^>]+./','', $content);
|
60 |
|
61 |
+
// remove shortcodes
|
62 |
+
$content = preg_replace('/\[[^\[\]]*\]/', '', $content);
|
63 |
|
64 |
// remove wysija nl shortcode
|
65 |
$content= preg_replace('/\<div class="wysija-register">(.*?)\<\/div>/','',$content);
|
231 |
$content = '';
|
232 |
|
233 |
// get categories
|
234 |
+
$categories = get_the_category($post['ID']);
|
|
|
|
|
235 |
|
236 |
if(empty($categories) === false) {
|
237 |
// check if the user specified a label to be displayed before the author's name
|
239 |
$content = stripslashes($params['category_label']).' ';
|
240 |
}
|
241 |
|
242 |
+
$category_names = array();
|
243 |
+
|
244 |
+
foreach($categories as $category) {
|
245 |
+
$category_names[] = $category->name;
|
246 |
+
}
|
247 |
+
|
248 |
+
$content .= join(', ', $category_names);
|
249 |
}
|
250 |
|
251 |
return $content;
|
helpers/back.php
CHANGED
@@ -78,6 +78,42 @@ class WYSIJA_help_back extends WYSIJA_help{
|
|
78 |
}
|
79 |
}
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
|
82 |
/**
|
83 |
* On any of the administration pages related to MailPoet, if the user
|
@@ -172,43 +208,6 @@ class WYSIJA_help_back extends WYSIJA_help{
|
|
172 |
}
|
173 |
}
|
174 |
|
175 |
-
/**
|
176 |
-
* this function will check the role of the user executing the action, if it's called from another
|
177 |
-
* WordPress admin page than page.php for instance admin-post.php
|
178 |
-
* @return boolean
|
179 |
-
*/
|
180 |
-
function verify_capability(){
|
181 |
-
if( isset( $_GET['page'] ) && substr( $_GET['page'] ,0 ,7 ) == 'wysija_' ){
|
182 |
-
|
183 |
-
switch( $_GET['page'] ){
|
184 |
-
case 'wysija_campaigns':
|
185 |
-
$role_needed = 'wysija_newsletters';
|
186 |
-
break;
|
187 |
-
case 'wysija_subscribers':
|
188 |
-
$role_needed = 'wysija_subscribers';
|
189 |
-
break;
|
190 |
-
case 'wysija_config':
|
191 |
-
$role_needed = 'wysija_config';
|
192 |
-
break;
|
193 |
-
case 'wysija_statistics':
|
194 |
-
$role_needed = 'wysija_stats_dashboard';
|
195 |
-
break;
|
196 |
-
default:
|
197 |
-
$role_needed = 'switch_themes';
|
198 |
-
}
|
199 |
-
|
200 |
-
if( current_user_can( $role_needed ) ){
|
201 |
-
return true;
|
202 |
-
} else{
|
203 |
-
die( 'You are not allowed here.' );
|
204 |
-
}
|
205 |
-
|
206 |
-
}else{
|
207 |
-
// this is not a wysija interface/action we can let it pass
|
208 |
-
return true;
|
209 |
-
}
|
210 |
-
}
|
211 |
-
|
212 |
/**
|
213 |
* translatable strings need to be not loaded to early, this is why we put them ina separate function
|
214 |
* @global type $wysija_installing
|
@@ -425,7 +424,7 @@ class WYSIJA_help_back extends WYSIJA_help{
|
|
425 |
function addCodeToPagePost(){
|
426 |
|
427 |
//code to add external buttons to the tmce only if the user has the rights to add the forms
|
428 |
-
if(get_user_option('rich_editing') == 'true') {
|
429 |
add_filter("mce_external_plugins", array($this,"addRichPlugin"));
|
430 |
add_filter('mce_buttons', array($this,'addRichButton1'),999);
|
431 |
$myStyleUrl = "../../plugins/wysija-newsletters/css/tmce/style.css";
|
@@ -438,16 +437,8 @@ class WYSIJA_help_back extends WYSIJA_help{
|
|
438 |
}
|
439 |
|
440 |
function addRichPlugin($plugin_array) {
|
441 |
-
|
442 |
-
|
443 |
-
if ( version_compare( $wp_version, '3.9', '<' ) ){
|
444 |
-
$suffix = '';
|
445 |
-
} else {
|
446 |
-
$suffix = '_39';
|
447 |
-
}
|
448 |
-
|
449 |
-
$plugin_array['wysija_register'] = WYSIJA_URL.'mce/wysija_register/editor_plugin'.$suffix.'.js';
|
450 |
-
//$plugin_array['wysija_subscribers'] = WYSIJA_URL.'mce/wysija_subscribers/editor_plugin.js';
|
451 |
|
452 |
return $plugin_array;
|
453 |
}
|
78 |
}
|
79 |
}
|
80 |
|
81 |
+
/**
|
82 |
+
* this function will check the role of the user executing the action, if it's called from another
|
83 |
+
* WordPress admin page than page.php for instance admin-post.php
|
84 |
+
* @return boolean
|
85 |
+
*/
|
86 |
+
function verify_capability(){
|
87 |
+
if( isset( $_GET['page'] ) && substr( $_GET['page'] ,0 ,7 ) == 'wysija_' ){
|
88 |
+
|
89 |
+
switch( $_GET['page'] ){
|
90 |
+
case 'wysija_campaigns':
|
91 |
+
$role_needed = 'wysija_newsletters';
|
92 |
+
break;
|
93 |
+
case 'wysija_subscribers':
|
94 |
+
$role_needed = 'wysija_subscribers';
|
95 |
+
break;
|
96 |
+
case 'wysija_config':
|
97 |
+
$role_needed = 'wysija_config';
|
98 |
+
break;
|
99 |
+
case 'wysija_statistics':
|
100 |
+
$role_needed = 'wysija_stats_dashboard';
|
101 |
+
break;
|
102 |
+
default:
|
103 |
+
$role_needed = 'switch_themes';
|
104 |
+
}
|
105 |
+
|
106 |
+
if( current_user_can( $role_needed ) ){
|
107 |
+
return true;
|
108 |
+
} else{
|
109 |
+
die( 'You are not allowed here.' );
|
110 |
+
}
|
111 |
+
|
112 |
+
}else{
|
113 |
+
// this is not a wysija interface/action we can let it pass
|
114 |
+
return true;
|
115 |
+
}
|
116 |
+
}
|
117 |
|
118 |
/**
|
119 |
* On any of the administration pages related to MailPoet, if the user
|
208 |
}
|
209 |
}
|
210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
/**
|
212 |
* translatable strings need to be not loaded to early, this is why we put them ina separate function
|
213 |
* @global type $wysija_installing
|
424 |
function addCodeToPagePost(){
|
425 |
|
426 |
//code to add external buttons to the tmce only if the user has the rights to add the forms
|
427 |
+
if(current_user_can('wysija_subscriwidget') && get_user_option('rich_editing') == 'true') {
|
428 |
add_filter("mce_external_plugins", array($this,"addRichPlugin"));
|
429 |
add_filter('mce_buttons', array($this,'addRichButton1'),999);
|
430 |
$myStyleUrl = "../../plugins/wysija-newsletters/css/tmce/style.css";
|
437 |
}
|
438 |
|
439 |
function addRichPlugin($plugin_array) {
|
440 |
+
$plugin_array['wysija_register'] = WYSIJA_URL.'mce/wysija_register/editor_plugin.js';
|
441 |
+
$plugin_array['wysija_subscribers'] = WYSIJA_URL.'mce/wysija_subscribers/editor_plugin.js';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
442 |
|
443 |
return $plugin_array;
|
444 |
}
|
helpers/backloader.php
CHANGED
@@ -24,6 +24,7 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
24 |
/* default script on all wysija interfaces in admin */
|
25 |
wp_enqueue_script( 'wysija-admin-if ', WYSIJA_URL . 'js/admin-wysija.js', array( 'jquery' ), WYSIJA::get_version() );
|
26 |
|
|
|
27 |
// TO IMPROVE: This has NOTHING TO DO HERE. It has to be moved to the subscribers controller
|
28 |
if ( ! $controller->jsTrans ) {
|
29 |
$controller->jsTrans['selecmiss'] = __( 'Please make a selection first!', WYSIJA );
|
@@ -66,77 +67,13 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
66 |
$possibleParameters = array( array( $pagename ), array( $pagename, $action ) );
|
67 |
$enqueueFileTypes = array( 'wp_enqueue_script' => array( 'js' => 'js', 'php' => 'js' ), 'wp_enqueue_style' => array( 'css' => 'css' ) );
|
68 |
|
69 |
-
// Files that we have, don't use file_exists if we know which files we have
|
70 |
-
$files = (object) array(
|
71 |
-
'css' => array(
|
72 |
-
'add-ons',
|
73 |
-
'admin-campaigns-articles',
|
74 |
-
'admin-campaigns-autopost',
|
75 |
-
'admin-campaigns-bookmarks',
|
76 |
-
'admin-campaigns-dividers',
|
77 |
-
'admin-campaigns-editDetails',
|
78 |
-
'admin-campaigns-editTemplate',
|
79 |
-
'admin-campaigns-medias',
|
80 |
-
'admin-campaigns-themes',
|
81 |
-
'admin-campaigns-viewstats',
|
82 |
-
'admin-campaigns-welcome_new',
|
83 |
-
'admin-campaigns',
|
84 |
-
'admin-global',
|
85 |
-
'admin-premium',
|
86 |
-
'admin-statistics',
|
87 |
-
'admin-subscribers-addlist',
|
88 |
-
'admin-subscribers-edit',
|
89 |
-
'admin-subscribers-export',
|
90 |
-
'admin-subscribers-exportlist',
|
91 |
-
'admin-subscribers-import',
|
92 |
-
'admin-subscribers-importmatch',
|
93 |
-
'admin-subscribers-lists',
|
94 |
-
'admin-widget',
|
95 |
-
'admin-config',
|
96 |
-
'admin-config-form_widget_settings',
|
97 |
-
),
|
98 |
-
'js' => array(
|
99 |
-
'admin-ajax-proto',
|
100 |
-
'admin-ajax',
|
101 |
-
'admin-campaigns-articles',
|
102 |
-
'admin-campaigns-autopost',
|
103 |
-
'admin-campaigns-bookmarks',
|
104 |
-
'admin-campaigns-default',
|
105 |
-
'admin-campaigns-dividers',
|
106 |
-
'admin-campaigns-edit',
|
107 |
-
'admin-campaigns-editAutonl',
|
108 |
-
'admin-campaigns-editDetails',
|
109 |
-
'admin-campaigns-editTemplate',
|
110 |
-
'admin-campaigns-image_data',
|
111 |
-
'admin-campaigns-medias',
|
112 |
-
'admin-campaigns-themes',
|
113 |
-
'admin-campaigns-viewstats',
|
114 |
-
'admin-campaigns-welcome_new',
|
115 |
-
'admin-config-form_widget_settings',
|
116 |
-
'admin-config-settings',
|
117 |
-
'admin-global',
|
118 |
-
'admin-listing',
|
119 |
-
'admin-statistics-filter',
|
120 |
-
'admin-statistics',
|
121 |
-
'admin-subscribers-edit-manual',
|
122 |
-
'admin-subscribers-export',
|
123 |
-
'admin-subscribers-import',
|
124 |
-
'admin-subscribers-importmatch',
|
125 |
-
'admin-subscribers',
|
126 |
-
'admin-tmce',
|
127 |
-
'admin-wysija-global',
|
128 |
-
'admin-wysija',
|
129 |
-
)
|
130 |
-
);
|
131 |
-
|
132 |
foreach ( $possibleParameters as $params ) {
|
133 |
-
foreach ( $enqueueFileTypes as $
|
134 |
-
foreach ( $
|
135 |
-
$
|
136 |
-
|
137 |
-
$
|
138 |
-
$
|
139 |
-
call_user_func_array( $method, array( $file_id, $file_url, array(), WYSIJA::get_version() ) );
|
140 |
}
|
141 |
}
|
142 |
}
|
@@ -228,7 +165,7 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
228 |
'mailpoet-select2-l10n',
|
229 |
'mailpoet_l10n_select2',
|
230 |
array(
|
231 |
-
'noMatches' => __( 'No Results
|
232 |
'inputTooShort' => __( 'Please enter <%= chars %> more character<%= plural %>', WYSIJA ),
|
233 |
'inputTooLong' => __( 'Please delete <%= chars %> character<%= plural %>', WYSIJA ),
|
234 |
'selectionTooBig' => __( 'You can only select <%= chars %> item<%= plural %>', WYSIJA ),
|
@@ -278,7 +215,7 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
278 |
'image' => __( 'Image' ),
|
279 |
'of' => __( 'of' ),
|
280 |
'close' => __( 'Close' ),
|
281 |
-
'noif rames' => __( 'This feature requires inline frames. You have
|
282 |
'l10n_print_after' => 'try{convertEntities( thickboxL10n );}catch( e ){};',
|
283 |
)
|
284 |
);
|
@@ -295,10 +232,6 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
295 |
wp_enqueue_style( 'wysija-editor-css', WYSIJA_URL . 'css/wysija-editor.css', array(), WYSIJA::get_version() );
|
296 |
wp_enqueue_script( 'wysija-colorpicker', WYSIJA_URL . 'js/excolor/jquery.modcoder.excolor.js', array(), WYSIJA::get_version() );
|
297 |
|
298 |
-
if ( version_compare( $GLOBALS['wp_version'], '3.9', '>=' ) ){
|
299 |
-
wp_enqueue_style( 'mailpoet-tinymce', WYSIJA_URL . 'css/tmce/editor.css', array(), WYSIJA::get_version() );
|
300 |
-
}
|
301 |
-
|
302 |
/* MailPoet editor i18n */
|
303 |
wp_localize_script( 'wysija-editor', 'Wysija_i18n', $controller->jsTrans );
|
304 |
break;
|
@@ -308,20 +241,16 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
308 |
break;
|
309 |
|
310 |
case 'wysija-tooltip':
|
311 |
-
wp_enqueue_script( '
|
312 |
-
wp_enqueue_style( '
|
313 |
break;
|
314 |
|
315 |
default:
|
316 |
if ( is_string( $kjs ) ) {
|
317 |
// check if there's a trailing slash in the urlbase
|
318 |
-
if ( substr( $urlbase, -1 ) !== '/' )
|
319 |
-
$urlbase .= '/';
|
320 |
-
}
|
321 |
// check if there's already an extension specif ied for the file
|
322 |
-
if ( substr( $urlbase, -3 ) !== '.js' )
|
323 |
-
$js .= '.js';
|
324 |
-
}
|
325 |
// enqueue script
|
326 |
|
327 |
wp_enqueue_script( $kjs, $urlbase . 'js/' . $js, array(), WYSIJA::get_version() );
|
@@ -362,9 +291,8 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
362 |
function localizeme( $handle, $object_name, $l10n ) {
|
363 |
|
364 |
foreach ( ( array ) $l10n as $key => $value ) {
|
365 |
-
if ( ! is_scalar( $value ) )
|
366 |
continue;
|
367 |
-
}
|
368 |
$l10n[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
|
369 |
}
|
370 |
|
@@ -383,24 +311,4 @@ class WYSIJA_help_backloader extends WYSIJA_help{
|
|
383 |
echo "</script>\n";
|
384 |
}
|
385 |
|
386 |
-
|
387 |
-
|
388 |
-
/**
|
389 |
-
* this is for backward compatibility and avoid blank screen on older version of the premium plugin
|
390 |
-
*/
|
391 |
-
function loadScriptsStyles( $pagename, $dirname, $urlname, &$controller, $extension = 'newsletter' ) {
|
392 |
-
return $this->load_assets( $pagename, $dirname, $urlname, $controller, $extension );
|
393 |
-
}
|
394 |
-
|
395 |
-
/**
|
396 |
-
* this is for backward compatibility and avoid blank screen on older version of the premium plugin
|
397 |
-
*/
|
398 |
-
function initLoad( &$controller ){
|
399 |
-
return $this->init( $controller );
|
400 |
-
}
|
401 |
-
|
402 |
-
function jsParse( &$controller, $pagename, $urlbase = WYSIJA_URL ){
|
403 |
-
$this->parse_js( $controller, $pagename, $urlbase );
|
404 |
-
}
|
405 |
-
|
406 |
}
|
24 |
/* default script on all wysija interfaces in admin */
|
25 |
wp_enqueue_script( 'wysija-admin-if ', WYSIJA_URL . 'js/admin-wysija.js', array( 'jquery' ), WYSIJA::get_version() );
|
26 |
|
27 |
+
|
28 |
// TO IMPROVE: This has NOTHING TO DO HERE. It has to be moved to the subscribers controller
|
29 |
if ( ! $controller->jsTrans ) {
|
30 |
$controller->jsTrans['selecmiss'] = __( 'Please make a selection first!', WYSIJA );
|
67 |
$possibleParameters = array( array( $pagename ), array( $pagename, $action ) );
|
68 |
$enqueueFileTypes = array( 'wp_enqueue_script' => array( 'js' => 'js', 'php' => 'js' ), 'wp_enqueue_style' => array( 'css' => 'css' ) );
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
foreach ( $possibleParameters as $params ) {
|
71 |
+
foreach ( $enqueueFileTypes as $wayToInclude => $fileTypes ) {
|
72 |
+
foreach ( $fileTypes as $fileType => $folderLocation ){
|
73 |
+
if ( file_exists( $dirname . $folderLocation . DS . 'admin-' . implode( '-', $params ) . '.' . $fileType ) ) {
|
74 |
+
$sourceIdentifier = 'wysija-autoinc-' . $extension . '-admin-' . implode( '-', $params ) . '-' . $fileType;
|
75 |
+
$sourceUrl = $urlname . $folderLocation . '/admin-' . implode( '-', $params ) . '.' . $fileType;
|
76 |
+
call_user_func_array( $wayToInclude, array( $sourceIdentifier, $sourceUrl, array(), WYSIJA::get_version() ) );
|
|
|
77 |
}
|
78 |
}
|
79 |
}
|
165 |
'mailpoet-select2-l10n',
|
166 |
'mailpoet_l10n_select2',
|
167 |
array(
|
168 |
+
'noMatches' => __( 'No Results where found', WYSIJA ),
|
169 |
'inputTooShort' => __( 'Please enter <%= chars %> more character<%= plural %>', WYSIJA ),
|
170 |
'inputTooLong' => __( 'Please delete <%= chars %> character<%= plural %>', WYSIJA ),
|
171 |
'selectionTooBig' => __( 'You can only select <%= chars %> item<%= plural %>', WYSIJA ),
|
215 |
'image' => __( 'Image' ),
|
216 |
'of' => __( 'of' ),
|
217 |
'close' => __( 'Close' ),
|
218 |
+
'noif rames' => __( 'This feature requires inline frames. You have if rames disabled or your browser does not support them.' ),
|
219 |
'l10n_print_after' => 'try{convertEntities( thickboxL10n );}catch( e ){};',
|
220 |
)
|
221 |
);
|
232 |
wp_enqueue_style( 'wysija-editor-css', WYSIJA_URL . 'css/wysija-editor.css', array(), WYSIJA::get_version() );
|
233 |
wp_enqueue_script( 'wysija-colorpicker', WYSIJA_URL . 'js/excolor/jquery.modcoder.excolor.js', array(), WYSIJA::get_version() );
|
234 |
|
|
|
|
|
|
|
|
|
235 |
/* MailPoet editor i18n */
|
236 |
wp_localize_script( 'wysija-editor', 'Wysija_i18n', $controller->jsTrans );
|
237 |
break;
|
241 |
break;
|
242 |
|
243 |
case 'wysija-tooltip':
|
244 |
+
wp_enqueue_script( 'jquery-qtip', WYSIJA_URL . 'js/qtip2/jquery.qtip.min.js', array( 'jquery' ), WYSIJA::get_version() );
|
245 |
+
wp_enqueue_style( 'jquery-qtip-css', WYSIJA_URL . 'css/qtip2/jquery.qtip.min.css' );
|
246 |
break;
|
247 |
|
248 |
default:
|
249 |
if ( is_string( $kjs ) ) {
|
250 |
// check if there's a trailing slash in the urlbase
|
251 |
+
if ( substr( $urlbase, -1 ) !== '/' ) $urlbase .= '/';
|
|
|
|
|
252 |
// check if there's already an extension specif ied for the file
|
253 |
+
if ( substr( $urlbase, -3 ) !== '.js' ) $js .= '.js';
|
|
|
|
|
254 |
// enqueue script
|
255 |
|
256 |
wp_enqueue_script( $kjs, $urlbase . 'js/' . $js, array(), WYSIJA::get_version() );
|
291 |
function localizeme( $handle, $object_name, $l10n ) {
|
292 |
|
293 |
foreach ( ( array ) $l10n as $key => $value ) {
|
294 |
+
if ( ! is_scalar( $value ) )
|
295 |
continue;
|
|
|
296 |
$l10n[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
|
297 |
}
|
298 |
|
311 |
echo "</script>\n";
|
312 |
}
|
313 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
314 |
}
|
helpers/bounce.php
CHANGED
@@ -543,6 +543,7 @@ class WYSIJA_help_bounce extends WYSIJA_help {
|
|
543 |
}
|
544 |
|
545 |
if (isset($one_rule['action_user']) && in_array($one_rule['action_user'], array('unsub'))) {
|
|
|
546 |
if (empty($this->_message->subemail)) {
|
547 |
$currentUser = $this->subClass->getObject($this->_message->user_id);
|
548 |
if (!empty($currentUser->email))
|
@@ -1083,7 +1084,7 @@ class WYSIJA_help_bounce extends WYSIJA_help {
|
|
1083 |
if(!empty($result_subscriber[0]->email)){
|
1084 |
$main_site_prefix = $this->subClass->get_site_prefix();
|
1085 |
$query_insert_bounce_ms = 'INSERT IGNORE INTO `'.$main_site_prefix.'bounce` (`email`,`site_id`,`user_id`,`email_id`,`action_taken`,`case`,`message`,`created_at`)';
|
1086 |
-
$query_insert_bounce_ms .= " VALUES ('".$result_subscriber[0]->email."','".(int)$this->_message->site_id."','".(int)$this->_message->user_id."','".(int)$this->_message->email_id."','".$action_taken."', '".$one_rule['key']."', '".
|
1087 |
|
1088 |
$this->subClass->query($query_insert_bounce_ms);
|
1089 |
}
|
543 |
}
|
544 |
|
545 |
if (isset($one_rule['action_user']) && in_array($one_rule['action_user'], array('unsub'))) {
|
546 |
+
$status = $this->subClass->getSubscriptionStatus($this->_message->user_id);
|
547 |
if (empty($this->_message->subemail)) {
|
548 |
$currentUser = $this->subClass->getObject($this->_message->user_id);
|
549 |
if (!empty($currentUser->email))
|
1084 |
if(!empty($result_subscriber[0]->email)){
|
1085 |
$main_site_prefix = $this->subClass->get_site_prefix();
|
1086 |
$query_insert_bounce_ms = 'INSERT IGNORE INTO `'.$main_site_prefix.'bounce` (`email`,`site_id`,`user_id`,`email_id`,`action_taken`,`case`,`message`,`created_at`)';
|
1087 |
+
$query_insert_bounce_ms .= " VALUES ('".$result_subscriber[0]->email."','".(int)$this->_message->site_id."','".(int)$this->_message->user_id."','".(int)$this->_message->email_id."','".$action_taken."', '".$one_rule['key']."', '". mysql_real_escape_string($email_copy)."', '".time()."')";
|
1088 |
|
1089 |
$this->subClass->query($query_insert_bounce_ms);
|
1090 |
}
|
helpers/campaigns.php
CHANGED
@@ -1,52 +1,48 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
add_action( 'wp_ajax_mailpoet.search_terms', 'WYSIJA_help_campaigns::ajax_search_terms' );
|
5 |
-
|
6 |
-
|
7 |
-
*/
|
8 |
defined('WYSIJA') or die('Restricted access');
|
9 |
class WYSIJA_help_campaigns extends WYSIJA_object{
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
52 |
}
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_help_campaigns extends WYSIJA_object{
|
4 |
+
|
5 |
+
|
6 |
+
function WYSIJA_help_campaigns(){
|
7 |
+
|
8 |
+
}
|
9 |
+
|
10 |
+
function saveParameters($email_id, $key, $value)
|
11 |
+
{
|
12 |
+
// 1. get params field for given campaign
|
13 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
14 |
+
$email = $modelEmail->getOne('params', array('email_id' => $email_id));
|
15 |
+
$params = $email['params'];
|
16 |
+
|
17 |
+
if(!is_array($params)) {
|
18 |
+
$params = array();
|
19 |
+
}
|
20 |
+
|
21 |
+
// 2 update data for given key
|
22 |
+
if(array_key_exists($key, $params)) {
|
23 |
+
$params[$key] = $value;
|
24 |
+
} else {
|
25 |
+
$params = array_merge($params, array($key => $value));
|
26 |
+
}
|
27 |
+
|
28 |
+
// 3. update campaign
|
29 |
+
return $modelEmail->update(array('params' => $params), array('email_id' => $email_id));
|
30 |
+
}
|
31 |
+
|
32 |
+
function getParameters($email_id, $key = null) {
|
33 |
+
// 1. get params field for given campaign
|
34 |
+
$modelEmail = WYSIJA::get('email', 'model');
|
35 |
+
$email = $modelEmail->getOne('params', array('email_id' => $email_id));
|
36 |
+
$params = $email['params'];
|
37 |
+
|
38 |
+
if($key === null) {
|
39 |
+
return $params;
|
40 |
+
} else {
|
41 |
+
if(!is_array($params) or array_key_exists($key, $params) === false) {
|
42 |
+
return false;
|
43 |
+
} else {
|
44 |
+
return $params[$key];
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
}
|
helpers/email.php
CHANGED
@@ -103,9 +103,9 @@ class WYSIJA_help_email extends WYSIJA_object{
|
|
103 |
$this->error(__('The PHP Extension openssl is not enabled on your server. Ask your host to enable it if you want to use an SSL connection.',WYSIJA));
|
104 |
}elseif(!empty($bounce) AND !in_array($config->getValue('sending_method'),array('smtp_com','elasticemail'))){
|
105 |
$this->error(sprintf(__('The bounce email address "%1$s" might actually cause the problem. Leave the field empty and try again.',WYSIJA),$bounce));
|
106 |
-
//Case 2 : you are using SMTP but you didn't add an
|
107 |
}elseif(in_array($config->getValue('sending_method'),array('smtp','gmail')) AND !$config->getValue('smtp_auth') AND strlen($config->getValue('smtp_password')) > 1){
|
108 |
-
$this->error(__('You specified an SMTP password but you don\'t require an
|
109 |
//Case 3 : you are on localhost!
|
110 |
}elseif((strpos(WYSIJA_URL,'localhost') || strpos(WYSIJA_URL,'127.0.0.1')) && in_array($config->getValue('sending_method'),array('sendmail','qmail','mail'))){
|
111 |
$this->error(__('Your localhost may not have a mail server. To verify, please log out and click on the "Lost your password?" link on the login page. Do you receive the reset password email from your WordPress?',WYSIJA));
|
103 |
$this->error(__('The PHP Extension openssl is not enabled on your server. Ask your host to enable it if you want to use an SSL connection.',WYSIJA));
|
104 |
}elseif(!empty($bounce) AND !in_array($config->getValue('sending_method'),array('smtp_com','elasticemail'))){
|
105 |
$this->error(sprintf(__('The bounce email address "%1$s" might actually cause the problem. Leave the field empty and try again.',WYSIJA),$bounce));
|
106 |
+
//Case 2 : you are using SMTP but you didn't add an authentification
|
107 |
}elseif(in_array($config->getValue('sending_method'),array('smtp','gmail')) AND !$config->getValue('smtp_auth') AND strlen($config->getValue('smtp_password')) > 1){
|
108 |
+
$this->error(__('You specified an SMTP password but you don\'t require an authentification, you might want to turn the SMTP authentification ON.',WYSIJA));
|
109 |
//Case 3 : you are on localhost!
|
110 |
}elseif((strpos(WYSIJA_URL,'localhost') || strpos(WYSIJA_URL,'127.0.0.1')) && in_array($config->getValue('sending_method'),array('sendmail','qmail','mail'))){
|
111 |
$this->error(__('Your localhost may not have a mail server. To verify, please log out and click on the "Lost your password?" link on the login page. Do you receive the reset password email from your WordPress?',WYSIJA));
|
helpers/install.php
CHANGED
@@ -150,20 +150,17 @@ class WYSIJA_help_install extends WYSIJA_object{
|
|
150 |
|
151 |
// save the config into the db
|
152 |
|
153 |
-
if(
|
|
|
|
|
|
|
154 |
|
155 |
-
$
|
156 |
-
|
157 |
-
$values['installed'] = true;
|
158 |
-
$values['manage_subscriptions'] = true;
|
159 |
-
$values['installed_time'] = time();
|
160 |
-
|
161 |
-
$values['wysija_db_version'] = WYSIJA::get_version();
|
162 |
|
163 |
$wptoolboxs = WYSIJA::get('toolbox', 'helper');
|
164 |
-
$values['dkim_domain']
|
165 |
|
166 |
-
if(
|
167 |
$model_config->save($values);
|
168 |
|
169 |
WYSIJA::update_option('installation_step', '16');
|
@@ -479,15 +476,15 @@ class WYSIJA_help_install extends WYSIJA_object{
|
|
479 |
|
480 |
// execute the queries one by one
|
481 |
global $wpdb;
|
482 |
-
$has_errors
|
483 |
-
|
484 |
foreach($queries as $qry){
|
485 |
-
$last_error = $wpdb->last_error;
|
486 |
$wpdb->query($qry);
|
|
|
|
|
|
|
|
|
|
|
487 |
|
488 |
-
if( !empty($wpdb->last_error) && $last_error != $wpdb->last_error ){
|
489 |
-
$this->notice($wpdb->last_error);
|
490 |
-
$has_errors = true;
|
491 |
}
|
492 |
|
493 |
}
|
150 |
|
151 |
// save the config into the db
|
152 |
|
153 |
+
if((int)get_option('installation_step')<16){
|
154 |
+
$values['installed']=true;
|
155 |
+
$values['manage_subscriptions']=true;
|
156 |
+
$values['installed_time']=time();
|
157 |
|
158 |
+
$values['wysija_db_version']=WYSIJA::get_version();
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
|
160 |
$wptoolboxs = WYSIJA::get('toolbox', 'helper');
|
161 |
+
$values['dkim_domain']=$wptoolboxs->_make_domain_name();
|
162 |
|
163 |
+
if(get_option('wysija_reinstall',0)) $values['wysija_whats_new']=WYSIJA::get_version();
|
164 |
$model_config->save($values);
|
165 |
|
166 |
WYSIJA::update_option('installation_step', '16');
|
476 |
|
477 |
// execute the queries one by one
|
478 |
global $wpdb;
|
479 |
+
$has_errors=false;
|
|
|
480 |
foreach($queries as $qry){
|
|
|
481 |
$wpdb->query($qry);
|
482 |
+
$error = mysql_error( $wpdb->dbh );
|
483 |
+
|
484 |
+
if($error){
|
485 |
+
$this->notice(mysql_error());
|
486 |
+
$has_errors=true;
|
487 |
|
|
|
|
|
|
|
488 |
}
|
489 |
|
490 |
}
|
helpers/licence.php
CHANGED
@@ -111,7 +111,7 @@ class WYSIJA_help_licence extends WYSIJA_help{
|
|
111 |
case 1: //Domain \'%1$s\' does not exist.
|
112 |
//$error_msg=__('\'%1$s\' does not exist!',WYSIJA);
|
113 |
|
114 |
-
$error_msg=__('Your website doesn\'t seem to have a license! Log
|
115 |
break;
|
116 |
case 2: //'Licence (id: %d) does not exist for domain "%s"
|
117 |
$error_msg=__('There\'s no license for "%1$s". If you\'re Premium, add this domain in your [link]account manager[/link].',WYSIJA);
|
111 |
case 1: //Domain \'%1$s\' does not exist.
|
112 |
//$error_msg=__('\'%1$s\' does not exist!',WYSIJA);
|
113 |
|
114 |
+
$error_msg=__('Your website doesn\'t seem to have a license! Log in to your [link]account manager[/link] to add a license for this website.',WYSIJA);
|
115 |
break;
|
116 |
case 2: //'Licence (id: %d) does not exist for domain "%s"
|
117 |
$error_msg=__('There\'s no license for "%1$s". If you\'re Premium, add this domain in your [link]account manager[/link].',WYSIJA);
|
helpers/render_engine.php
CHANGED
@@ -170,13 +170,13 @@ class WYSIJA_help_render_engine extends WYSIJA_object {
|
|
170 |
|
171 |
# position in list
|
172 |
$i < $count-1 ? $line[self::_LAST] = false : $line[self::_LAST] = true;
|
173 |
-
$i
|
174 |
|
175 |
# rows and columns infos
|
176 |
if ($loop_row_size) {
|
177 |
# col position
|
178 |
($i+1)%$loop_row_size ? $line[self::_LAST_COL] = false : $line[self::_LAST_COL] = true;
|
179 |
-
($i+1)%$loop_row_size
|
180 |
|
181 |
# row position
|
182 |
$i<$loop_row_size ? $line[self::_FIRST_ROW] = true : $line[self::_FIRST_ROW] = false;
|
@@ -751,25 +751,6 @@ class WYSIJA_help_render_engine extends WYSIJA_object {
|
|
751 |
}
|
752 |
$value = $ratio;
|
753 |
break;
|
754 |
-
case 'format_line_height':
|
755 |
-
// if value in px, don't modify
|
756 |
-
if($value !== '0' && strpos($value, 'px') === FALSE && strpos($value, '%') === FALSE) {
|
757 |
-
// if number value, convert to percent
|
758 |
-
$percentage = ((float)$value * 100);
|
759 |
-
$value = $percentage.'%';
|
760 |
-
}
|
761 |
-
break;
|
762 |
-
|
763 |
-
case 'format_font_size_value':
|
764 |
-
if(strpos($value, 'em') !== FALSE) {
|
765 |
-
// if number value, convert to percent
|
766 |
-
$percentage = ((float)$value * 100);
|
767 |
-
$value = $percentage.'%';
|
768 |
-
} else if(strpos($value, '%') === FALSE) {
|
769 |
-
$value = $value.'px';
|
770 |
-
}
|
771 |
-
break;
|
772 |
-
|
773 |
case 'inc':
|
774 |
if (!isset ($arguments[0])) {
|
775 |
$value++;
|
@@ -780,7 +761,7 @@ class WYSIJA_help_render_engine extends WYSIJA_object {
|
|
780 |
|
781 |
case 'mult':
|
782 |
if ($arguments) {
|
783 |
-
$value =
|
784 |
}
|
785 |
break;
|
786 |
|
170 |
|
171 |
# position in list
|
172 |
$i < $count-1 ? $line[self::_LAST] = false : $line[self::_LAST] = true;
|
173 |
+
$i == 0 ? $line[self::_FIRST] = true : $line[self::_FIRST] = false;
|
174 |
|
175 |
# rows and columns infos
|
176 |
if ($loop_row_size) {
|
177 |
# col position
|
178 |
($i+1)%$loop_row_size ? $line[self::_LAST_COL] = false : $line[self::_LAST_COL] = true;
|
179 |
+
($i+1)%$loop_row_size==1 ? $line[self::_FIRST_COL] = true : $line[self::_FIRST_COL] = false;
|
180 |
|
181 |
# row position
|
182 |
$i<$loop_row_size ? $line[self::_FIRST_ROW] = true : $line[self::_FIRST_ROW] = false;
|
751 |
}
|
752 |
$value = $ratio;
|
753 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
754 |
case 'inc':
|
755 |
if (!isset ($arguments[0])) {
|
756 |
$value++;
|
761 |
|
762 |
case 'mult':
|
763 |
if ($arguments) {
|
764 |
+
$value = $value * $arguments[0];
|
765 |
}
|
766 |
break;
|
767 |
|
helpers/server.php
CHANGED
@@ -135,18 +135,18 @@ class WYSIJA_help_server extends WYSIJA_object {
|
|
135 |
function can_sql_create_tables(){
|
136 |
|
137 |
// test that we can create tables on the mysql server
|
138 |
-
$model_user
|
139 |
|
140 |
$this->_create_temp_sql_table_if_not_exists();
|
141 |
|
142 |
$query="SHOW TABLES like '".$model_user->getPrefix()."user_list_temp';";
|
143 |
|
144 |
global $wpdb;
|
145 |
-
$res
|
146 |
|
147 |
if(!$res){
|
148 |
$this->error(sprintf(
|
149 |
-
__('The MySQL user you have setup on your WordPress site (wp-config.php) doesn\'t have enough privileges to CREATE MySQL tables. Please change this user yourself or contact the administrator of your site in order to complete MailPoet\'s installation. mysql errors:(%1$s)',WYSIJA),
|
150 |
return false;
|
151 |
}
|
152 |
return true;
|
@@ -170,7 +170,7 @@ class WYSIJA_help_server extends WYSIJA_object {
|
|
170 |
$wpdb->query($query);
|
171 |
if(!$wpdb->result){
|
172 |
$error_message=__('The MySQL user you have setup on your WordPress site (wp-config.php) doesn\'t have enough privileges to CREATE MySQL tables. Please change this user yourself or contact the administrator of your site in order to complete MailPoet\'s installation. mysql errors:(%1$s)',WYSIJA);
|
173 |
-
$this->error(sprintf(str_replace('CREATE', 'ALTER', $error_message), $wpdb->
|
174 |
$this->_drop_temp_sql_table();
|
175 |
return false;
|
176 |
}
|
135 |
function can_sql_create_tables(){
|
136 |
|
137 |
// test that we can create tables on the mysql server
|
138 |
+
$model_user=WYSIJA::get('user','model');
|
139 |
|
140 |
$this->_create_temp_sql_table_if_not_exists();
|
141 |
|
142 |
$query="SHOW TABLES like '".$model_user->getPrefix()."user_list_temp';";
|
143 |
|
144 |
global $wpdb;
|
145 |
+
$res=$wpdb->get_var($query);
|
146 |
|
147 |
if(!$res){
|
148 |
$this->error(sprintf(
|
149 |
+
__('The MySQL user you have setup on your WordPress site (wp-config.php) doesn\'t have enough privileges to CREATE MySQL tables. Please change this user yourself or contact the administrator of your site in order to complete MailPoet\'s installation. mysql errors:(%1$s)',WYSIJA), mysql_error()));
|
150 |
return false;
|
151 |
}
|
152 |
return true;
|
170 |
$wpdb->query($query);
|
171 |
if(!$wpdb->result){
|
172 |
$error_message=__('The MySQL user you have setup on your WordPress site (wp-config.php) doesn\'t have enough privileges to CREATE MySQL tables. Please change this user yourself or contact the administrator of your site in order to complete MailPoet\'s installation. mysql errors:(%1$s)',WYSIJA);
|
173 |
+
$this->error(sprintf(str_replace('CREATE', 'ALTER', $error_message), mysql_error($wpdb->dbh)));
|
174 |
$this->_drop_temp_sql_table();
|
175 |
return false;
|
176 |
}
|
helpers/update.php
CHANGED
@@ -199,7 +199,7 @@ class WYSIJA_help_update extends WYSIJA_object {
|
|
199 |
return true;
|
200 |
break;
|
201 |
case '2.3.3':
|
202 |
-
update_option('wysija_log',
|
203 |
|
204 |
return true;
|
205 |
break;
|
@@ -408,10 +408,10 @@ class WYSIJA_help_update extends WYSIJA_object {
|
|
408 |
}
|
409 |
|
410 |
} else {
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
}
|
416 |
|
417 |
return true;
|
@@ -597,18 +597,18 @@ class WYSIJA_help_update extends WYSIJA_object {
|
|
597 |
* )
|
598 |
*/
|
599 |
function run_update_queries($queries) {
|
600 |
-
$failed
|
601 |
|
602 |
//we use mysql query instead of wordpress query to make sure we don't miss the sql errors
|
603 |
global $wpdb;
|
604 |
foreach($queries as $query){
|
605 |
$query=str_replace('[wysija]',$this->modelWysija->getPrefix(),$query);
|
606 |
-
$
|
607 |
-
|
|
|
|
|
|
|
608 |
|
609 |
-
if( (empty($wpdb->result) || !$wpdb->result) && !empty( $wpdb->last_error ) && $last_error != $wpdb->last_error ){
|
610 |
-
$failed[]= $wpdb->last_error." ($query)";
|
611 |
-
}
|
612 |
}
|
613 |
if($failed) return $failed;
|
614 |
else return false;
|
@@ -867,60 +867,5 @@ class WYSIJA_help_update extends WYSIJA_object {
|
|
867 |
*/
|
868 |
}
|
869 |
|
870 |
-
/**
|
871 |
-
* in some cases scenario our update helper can't be run simply because a version is missing
|
872 |
-
*/
|
873 |
-
function repair_settings(){
|
874 |
-
static $is_repairing = FALSE;
|
875 |
-
|
876 |
-
if($is_repairing === FALSE){
|
877 |
-
$is_repairing = TRUE;
|
878 |
-
|
879 |
-
// set installed as true
|
880 |
-
$values['installed'] = true;
|
881 |
-
// set installed_time: minus 7200 on it so that we don't display the welcome page again on the
|
882 |
-
// view condition in the check() function above WYSIJA::redirect('admin.php?page=wysija_campaigns&action=welcome_new');
|
883 |
-
$values['installed_time'] = time() - 7200;
|
884 |
-
|
885 |
-
// find our current db version
|
886 |
-
$values['wysija_db_version'] = $this->_find_db_version();
|
887 |
-
|
888 |
-
// save the missing settings to repair the installation
|
889 |
-
$model_config = WYSIJA::get('config','model');
|
890 |
-
$model_config->save($values);
|
891 |
-
|
892 |
-
}
|
893 |
|
894 |
-
}
|
895 |
-
|
896 |
-
/**
|
897 |
-
* find out what is the db version based on the existing columns of some tables
|
898 |
-
*/
|
899 |
-
private function _find_db_version(){
|
900 |
-
$model_wysija = new WYSIJA_model();
|
901 |
-
|
902 |
-
// test against 2.0 and set it to 1.1 if true
|
903 |
-
$test = $model_wysija->query('get_res', "SHOW COLUMNS FROM `[wysija]email` like 'modified_at';" );
|
904 |
-
if(empty($test)){
|
905 |
-
return '1.1';
|
906 |
-
}
|
907 |
-
// test against 2.4 and set it to 2.3.4 if true
|
908 |
-
$test = $model_wysija->query('get_res', "SHOW COLUMNS FROM `[wysija]form`;" );
|
909 |
-
if(empty($test)){
|
910 |
-
return '2.3.4';
|
911 |
-
}
|
912 |
-
|
913 |
-
// test against 2.5.9.6 and set it to 2.5.5 if true
|
914 |
-
$test = $model_wysija->query('get_res', "SHOW COLUMNS FROM `[wysija]user` like 'domain';" );
|
915 |
-
if(empty($test)){
|
916 |
-
return '2.5.5';
|
917 |
-
}
|
918 |
-
// test against 2.5.9.7 and set it to 2.5.9.6 if true
|
919 |
-
$test = $model_wysija->query('get_res', "SHOW COLUMNS FROM `[wysija]user` like 'last_opened';" );
|
920 |
-
if(empty($test)){
|
921 |
-
return '2.5.9.6';
|
922 |
-
}
|
923 |
-
|
924 |
-
return WYSIJA::get_version();
|
925 |
-
}
|
926 |
}
|
199 |
return true;
|
200 |
break;
|
201 |
case '2.3.3':
|
202 |
+
update_option('wysija_log', $optionlog);
|
203 |
|
204 |
return true;
|
205 |
break;
|
408 |
}
|
409 |
|
410 |
} else {
|
411 |
+
if(!empty($errors)){
|
412 |
+
$this->error( implode( $errors, "\n" ) );
|
413 |
+
}
|
414 |
+
return false;
|
415 |
}
|
416 |
|
417 |
return true;
|
597 |
* )
|
598 |
*/
|
599 |
function run_update_queries($queries) {
|
600 |
+
$failed=array();
|
601 |
|
602 |
//we use mysql query instead of wordpress query to make sure we don't miss the sql errors
|
603 |
global $wpdb;
|
604 |
foreach($queries as $query){
|
605 |
$query=str_replace('[wysija]',$this->modelWysija->getPrefix(),$query);
|
606 |
+
$wpdb->query($query);
|
607 |
+
|
608 |
+
|
609 |
+
|
610 |
+
if(empty($wpdb->result) || !$wpdb->result) $failed[]= mysql_error($wpdb->dbh)." ($query)";
|
611 |
|
|
|
|
|
|
|
612 |
}
|
613 |
if($failed) return $failed;
|
614 |
else return false;
|
867 |
*/
|
868 |
}
|
869 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
870 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
871 |
}
|
helpers/user.php
CHANGED
@@ -265,12 +265,9 @@ class WYSIJA_help_user extends WYSIJA_object {
|
|
265 |
if (!empty($message_success))
|
266 |
$this->notice($message_success);
|
267 |
}else {
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
$this->notice(__('Oops! We could not add you!', WYSIJA));
|
272 |
-
}
|
273 |
-
return false;
|
274 |
}
|
275 |
|
276 |
$subscribe_to_list = $subscriber_status = 0;
|
@@ -925,16 +922,20 @@ class WYSIJA_help_user extends WYSIJA_object {
|
|
925 |
*/
|
926 |
function cleanWordpressUsersList() {
|
927 |
// update the screwed up wpuser_id
|
928 |
-
$
|
929 |
-
$query = 'UPDATE [wysija]user as A JOIN [wp]users as B on A.email=B.user_email SET A.wpuser_id = B.ID WHERE A.wpuser_id
|
930 |
-
$
|
|
|
931 |
|
932 |
// get all the wysija user with a wpuser_id >0 and insert them into the WordPress user list
|
933 |
-
$
|
934 |
-
$
|
|
|
|
|
|
|
935 |
$query = 'INSERT IGNORE INTO `[wysija]user_list` (`user_id`,`list_id`,`sub_date`) ' . $selectuserCreated;
|
936 |
-
$
|
937 |
-
$
|
938 |
return true;
|
939 |
}
|
940 |
|
265 |
if (!empty($message_success))
|
266 |
$this->notice($message_success);
|
267 |
}else {
|
268 |
+
$this->notice(__('Subscriber has not been saved.', WYSIJA));
|
269 |
+
if ($backend)
|
270 |
+
return false;
|
|
|
|
|
|
|
271 |
}
|
272 |
|
273 |
$subscribe_to_list = $subscriber_status = 0;
|
922 |
*/
|
923 |
function cleanWordpressUsersList() {
|
924 |
// update the screwed up wpuser_id
|
925 |
+
$model = WYSIJA::get('list', 'model');
|
926 |
+
$query = 'UPDATE [wysija]user as A LEFT JOIN [wp]users as B on A.email=B.user_email SET A.wpuser_id = B.ID WHERE A.wpuser_id=0';
|
927 |
+
$model->query($query);
|
928 |
+
|
929 |
|
930 |
// get all the wysija user with a wpuser_id >0 and insert them into the WordPress user list
|
931 |
+
$model->reset();
|
932 |
+
$model->query($query);
|
933 |
+
|
934 |
+
$mConfig = WYSIJA::get('config', 'model');
|
935 |
+
$selectuserCreated = 'SELECT [wysija]user.user_id, ' . $mConfig->getValue('importwp_list_id') . ', ' . time() . ' FROM [wysija]user WHERE wpuser_id>0';
|
936 |
$query = 'INSERT IGNORE INTO `[wysija]user_list` (`user_id`,`list_id`,`sub_date`) ' . $selectuserCreated;
|
937 |
+
$model->reset();
|
938 |
+
$model->query($query);
|
939 |
return true;
|
940 |
}
|
941 |
|
helpers/wj_engine.php
CHANGED
@@ -4,1624 +4,1463 @@ defined('WYSIJA') or die('Restricted access');
|
|
4 |
* @class Wysija Engine Helper (PHP4 version)
|
5 |
*/
|
6 |
class WYSIJA_help_wj_engine extends WYSIJA_object {
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
// check for emptyness
|
990 |
-
if($data['text'] === NULL and $data['image']['static'] === TRUE) {
|
991 |
-
return NULL;
|
992 |
-
}
|
993 |
-
|
994 |
-
// set header content width
|
995 |
-
$data['block_width'] = 600;
|
996 |
-
|
997 |
-
// generate block template
|
998 |
-
$header = $helper_render_engine->render($data, 'templates/newsletter/email/header_template.html');
|
999 |
-
|
1000 |
-
// apply inline styles
|
1001 |
-
$header = $this->applyInlineStyles('header', $header);
|
1002 |
-
|
1003 |
-
return $header;
|
1004 |
-
}
|
1005 |
-
|
1006 |
-
function encodeParameters($params = array()) {
|
1007 |
-
// encode string parameters
|
1008 |
-
$keys_to_encode = array('author_label', 'category_label', 'readmore');
|
1009 |
-
foreach($keys_to_encode as $key) {
|
1010 |
-
if(isset($params[$key]) && strlen(trim($params[$key])) > 0) {
|
1011 |
-
$params[$key] = base64_encode(stripslashes($params[$key]));
|
1012 |
-
}
|
1013 |
-
}
|
1014 |
-
return $params;
|
1015 |
}
|
1016 |
|
1017 |
function decodeParameters($params = array()) {
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
}
|
1027 |
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
|
1423 |
-
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
1487 |
-
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
$inlineStyles = preg_replace('/(\n*)/', '', $inlineStyles);
|
1494 |
-
$tags['#< *'.$tag.'((?:(?!style).)*)>#Ui'] = '<'.$tag.' style="'.$inlineStyles.'"$1>';
|
1495 |
-
unset($tags[$tag]);
|
1496 |
-
}
|
1497 |
-
|
1498 |
-
$block = preg_replace(array_keys($tags), $tags, $block);
|
1499 |
-
}
|
1500 |
-
|
1501 |
-
if(empty($classes) === FALSE) {
|
1502 |
-
foreach($classes as $class => $styles) {
|
1503 |
-
// split spacing styles
|
1504 |
-
$styles = $this->splitSpacing($styles);
|
1505 |
-
$inlineStyles = $helper_render_engine->render($styles, 'styles/inline.html');
|
1506 |
-
$inlineStyles = preg_replace('/(\n*)/', '', $inlineStyles);
|
1507 |
-
|
1508 |
-
// build regexp for this class
|
1509 |
-
$classes['#<([^ /]+) ((?:(?!>|style).)*)(?:style="([^"]*)")?((?:(?!>|style).)*)class="([^"]*)'.$class.'([^"]*)"((?:(?!>|style).)*)(?:style="([^"]*)")?((?:(?!>|style).)*)>#Ui'] = '<$1 $2$4$7 class="$5'.$class.'$6" style="$3$8'.$inlineStyles.'" $9>';
|
1510 |
-
|
1511 |
-
unset($classes[$class]);
|
1512 |
-
}
|
1513 |
-
|
1514 |
-
$styledBlock = preg_replace(array_keys($classes), $classes, $block);
|
1515 |
-
// Check if the preg_replace worked. Otherwise we simply return the original block
|
1516 |
-
if(strlen(trim($styledBlock)) > 0) {
|
1517 |
-
$block = $styledBlock;
|
1518 |
-
}
|
1519 |
-
}
|
1520 |
-
|
1521 |
-
return $block;
|
1522 |
-
}
|
1523 |
-
|
1524 |
-
function splitSpacing($styles) {
|
1525 |
-
foreach($styles as $property => $value) {
|
1526 |
-
if($property === 'margin' or $property === 'padding') {
|
1527 |
-
// extract multi-values
|
1528 |
-
$values = explode(' ', $value);
|
1529 |
-
|
1530 |
-
// split values depending on values count
|
1531 |
-
switch(count($values)) {
|
1532 |
-
case 1:
|
1533 |
-
$styles[$property.'-top'] = $values[0];
|
1534 |
-
$styles[$property.'-right'] = $values[0];
|
1535 |
-
$styles[$property.'-bottom'] = $values[0];
|
1536 |
-
$styles[$property.'-left'] = $values[0];
|
1537 |
-
break;
|
1538 |
-
case 2:
|
1539 |
-
$styles[$property.'-top'] = $values[0];
|
1540 |
-
$styles[$property.'-right'] = $values[1];
|
1541 |
-
$styles[$property.'-bottom'] = $values[0];
|
1542 |
-
$styles[$property.'-left'] = $values[1];
|
1543 |
-
break;
|
1544 |
-
case 4:
|
1545 |
-
$styles[$property.'-top'] = $values[0];
|
1546 |
-
$styles[$property.'-right'] = $values[1];
|
1547 |
-
$styles[$property.'-bottom'] = $values[2];
|
1548 |
-
$styles[$property.'-left'] = $values[3];
|
1549 |
-
break;
|
1550 |
-
}
|
1551 |
-
|
1552 |
-
// unset original value
|
1553 |
-
unset($styles[$property]);
|
1554 |
-
}
|
1555 |
-
}
|
1556 |
-
return $styles;
|
1557 |
-
}
|
1558 |
-
|
1559 |
-
function formatColor($color) {
|
1560 |
-
if(strlen(trim($color)) === 0 or $color === 'transparent') {
|
1561 |
-
return 'transparent';
|
1562 |
-
} else {
|
1563 |
-
return '#'.$color;
|
1564 |
-
}
|
1565 |
-
}
|
1566 |
-
|
1567 |
-
function convertTitles($html) {
|
1568 |
-
$patterns = array(
|
1569 |
-
'/<h[1|2|3](.*?)>/',
|
1570 |
-
'/<\/h[1|2|3]>/',
|
1571 |
-
);
|
1572 |
-
|
1573 |
-
$replacements = array(
|
1574 |
-
'<p$1>',
|
1575 |
-
'</p>'
|
1576 |
-
);
|
1577 |
-
|
1578 |
-
return preg_replace($patterns, $replacements, $html);
|
1579 |
-
}
|
1580 |
-
|
1581 |
-
// apply
|
1582 |
-
function applyTitleClasses($html) {
|
1583 |
-
|
1584 |
-
// set class for links in titles
|
1585 |
-
$html = preg_replace_callback('#(<h([1|2|3]) ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>(.*)<\/h[1|2|3]>)#Ui',
|
1586 |
-
create_function('$matches',
|
1587 |
-
'$output = $matches[0];'.
|
1588 |
-
'$title_class = \'wysija_title_\'.(int)$matches[2];'.
|
1589 |
-
'$link_class = $title_class.\'_link\';'.
|
1590 |
-
'$strong_class = $title_class.\'_strong\';'.
|
1591 |
-
'$italic_class = $title_class.\'_italic\';'.
|
1592 |
-
'$output = str_replace(\'<a\', \'<a class="\'.$link_class.\'"\', $output);'.
|
1593 |
-
'$output = str_replace(\'<strong\', \'<strong class="\'.$strong_class.\'"\', $output);'.
|
1594 |
-
'$output = str_replace(\'<em\', \'<em class="\'.$italic_class.\'"\', $output);'.
|
1595 |
-
'$output = str_replace(\'<h\'.(int)$matches[2], \'<h\'.(int)$matches[2].\' class="\'.$title_class.\'"\', $output);'.
|
1596 |
-
'return $output;'
|
1597 |
-
),
|
1598 |
-
$html
|
1599 |
-
);
|
1600 |
-
|
1601 |
-
return $html;
|
1602 |
-
}
|
1603 |
-
|
1604 |
-
// converts lists (ul, ol, li) into paragraphs for email compatibility
|
1605 |
-
function convertLists($html) {
|
1606 |
-
$patterns = array(
|
1607 |
-
'/<ul.*?>/',
|
1608 |
-
'/<ol.*?>/',
|
1609 |
-
'/<\/ul>/',
|
1610 |
-
'/<\/ol>/',
|
1611 |
-
'/<li ?((?:(?!>|class).)*)(?:class="([^"]*)")?((?:(?!>|class).)*)>/',
|
1612 |
-
'/<\/li>/'
|
1613 |
-
);
|
1614 |
-
|
1615 |
-
$replacements = array(
|
1616 |
-
'',
|
1617 |
-
'',
|
1618 |
-
'',
|
1619 |
-
'',
|
1620 |
-
'<p class="wysija_list_item $2">• ',
|
1621 |
-
'</p>'
|
1622 |
-
);
|
1623 |
-
|
1624 |
-
return preg_replace($patterns, $replacements, $html);
|
1625 |
-
|
1626 |
-
}
|
1627 |
}
|
4 |
* @class Wysija Engine Helper (PHP4 version)
|
5 |
*/
|
6 |
class WYSIJA_help_wj_engine extends WYSIJA_object {
|
7 |
+
// debug mode
|
8 |
+
var $_debug = false;
|
9 |
+
|
10 |
+
// contains email data
|
11 |
+
var $_email_data = null;
|
12 |
+
|
13 |
+
// rendering context (editor, email)
|
14 |
+
var $_context = 'editor';
|
15 |
+
|
16 |
+
// toggles for vib & unsub
|
17 |
+
var $_hide_viewbrowser = false;
|
18 |
+
var $_hide_unsubscribe = false;
|
19 |
+
|
20 |
+
// data holders
|
21 |
+
var $_data = null;
|
22 |
+
var $_styles = null;
|
23 |
+
|
24 |
+
// styles: defaults
|
25 |
+
var $VIEWBROWSER_SIZES = array(7, 8, 9, 10, 11, 12, 13, 14);
|
26 |
+
var $TEXT_SIZES = array(8, 9, 10, 11, 12, 13, 14, 16, 18, 24, 36, 48, 72);
|
27 |
+
var $TITLE_SIZES = array(16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 40, 44, 48, 54, 60, 66, 72);
|
28 |
+
var $FONTS = array("Arial", "Arial Black", "Comic Sans MS", "Courier New", "Georgia", "Impact", "Tahoma", "Times New Roman", "Trebuchet MS", "Verdana");
|
29 |
+
|
30 |
+
/* Constructor */
|
31 |
+
function WYSIJA_help_wj_engine() { }
|
32 |
+
|
33 |
+
/* i18n methods */
|
34 |
+
function getTranslations() {
|
35 |
+
return array(
|
36 |
+
'dropHeaderNotice' => __('Drop your logo in this header.',WYSIJA),
|
37 |
+
'dropFooterNotice' => __('Drop your footer image here.',WYSIJA),
|
38 |
+
'dropBannerNotice' => __('If you leave this area empty, it will not display once you send your email',WYSIJA),
|
39 |
+
'clickToEditText' => __('Click here to add a title or text.', WYSIJA),
|
40 |
+
'alignmentLeft' => __('Align left',WYSIJA),
|
41 |
+
'alignmentCenter' => __('Align center',WYSIJA),
|
42 |
+
'alignmentRight' => __('Align right',WYSIJA),
|
43 |
+
'addImageLink' => __('Add link / Alternative text',WYSIJA),
|
44 |
+
'removeImageLink' => __('Remove link',WYSIJA),
|
45 |
+
'removeImage' => __('Remove image',WYSIJA),
|
46 |
+
'remove' => __('Remove', WYSIJA),
|
47 |
+
'editText' => __( 'Edit text',WYSIJA),
|
48 |
+
'removeText' => __('Remove text',WYSIJA),
|
49 |
+
'textLabel' => __('Titles & text',WYSIJA),
|
50 |
+
'dividerLabel' => __('Horizontal line',WYSIJA),
|
51 |
+
'customDividerLabel' => __('Custom horizontal line',WYSIJA),
|
52 |
+
'postLabel' => __('WordPress post',WYSIJA),
|
53 |
+
'styleBodyLabel' => __('Text',WYSIJA),
|
54 |
+
'styleViewbrowserLabel' => __('"View in browser"', WYSIJA),
|
55 |
+
'styleH1Label' => __('Heading 1',WYSIJA),
|
56 |
+
'styleH2Label' => __('Heading 2',WYSIJA),
|
57 |
+
'styleH3Label' => __('Heading 3',WYSIJA),
|
58 |
+
'styleLinksLabel' => __('Links',WYSIJA),
|
59 |
+
'styleLinksDecorationLabel' => __('underline',WYSIJA),
|
60 |
+
'styleFooterLabel' => __('Footer text',WYSIJA),
|
61 |
+
'styleFooterBackgroundLabel' => __('Footer background',WYSIJA),
|
62 |
+
'styleBodyBackgroundLabel' => __('Newsletter',WYSIJA),
|
63 |
+
'styleHtmlBackgroundLabel' => __('Background', WYSIJA),
|
64 |
+
'styleHeaderBackgroundLabel' => __('Header background', WYSIJA),
|
65 |
+
'styleDividerLabel' => __('Horizontal line',WYSIJA),
|
66 |
+
'styleUnsubscribeColorLabel' => __('Unsubscribe',WYSIJA),
|
67 |
+
'articleSelectionTitle' => __('Post Selection', WYSIJA),
|
68 |
+
'bookmarkSelectionTitle' => __('Social Bookmark Selection', WYSIJA),
|
69 |
+
'dividerSelectionTitle' => __('Divider Selection', WYSIJA),
|
70 |
+
'abouttodeletetheme' => __('You are about to delete the theme : %1$s. Do you really want to do that?', WYSIJA),
|
71 |
+
'addLinkTitle' => __('Add Link & Alternative text', WYSIJA),
|
72 |
+
'styleTransparent' => __('Check this box if you want transparency', WYSIJA),
|
73 |
+
'ajaxLoading' => __('Loading...', WYSIJA),
|
74 |
+
'customFieldsLabel' => __('Insert dynamic data about your subscribers, the newsletter, today\'s date, etc...', WYSIJA),
|
75 |
+
'autoPostSettingsTitle' => __('Selection options', WYSIJA),
|
76 |
+
'autoPostEditSettings' => __('Edit Automatic latest content', WYSIJA),
|
77 |
+
'autoPostImmediateNotice' => __('You can only add one widget when designing a post notification sent immediately after an article is published', WYSIJA),
|
78 |
+
'toggleImagesTitle' => __('Preview without images', WYSIJA),
|
79 |
+
// Tags labels
|
80 |
+
'tags_user' => __('Subscriber', WYSIJA),
|
81 |
+
'tags_user_firstname' => __('First Name', WYSIJA),
|
82 |
+
'tags_user_lastname' => __('Last Name', WYSIJA),
|
83 |
+
'tags_user_email' => __('Email Address', WYSIJA),
|
84 |
+
'tags_user_displayname' => __('WordPress user display name', WYSIJA),
|
85 |
+
'tags_user_count' => __('Total of subscribers', WYSIJA),
|
86 |
+
'tags_newsletter' => __('Newsletter', WYSIJA),
|
87 |
+
'tags_newsletter_subject' => __('Newsletter Subject', WYSIJA),
|
88 |
+
'tags_newsletter_autonl' => __('Post Notifications', WYSIJA),
|
89 |
+
'tags_newsletter_total' => __('Total number of posts or pages', WYSIJA),
|
90 |
+
'tags_newsletter_post_title' => __('Latest post title', WYSIJA),
|
91 |
+
'tags_newsletter_number' => __('Issue number', WYSIJA),
|
92 |
+
'tags_date' => __('Date', WYSIJA),
|
93 |
+
'tags_date_d' => __('Current day of the month number', WYSIJA),
|
94 |
+
'tags_date_dordinal' => __('Current day of the month in ordinal, ie. 2nd, 3rd, etc.', WYSIJA),
|
95 |
+
'tags_date_dtext' => __('Full name of current day', WYSIJA),
|
96 |
+
'tags_date_m' => __('Current month number', WYSIJA),
|
97 |
+
'tags_date_mtext' => __('Full name of current month', WYSIJA),
|
98 |
+
'tags_date_y' => __('Year', WYSIJA),
|
99 |
+
'tags_global' => __('Links', WYSIJA),
|
100 |
+
'tags_global_unsubscribe' => __('Unsubscribe link', WYSIJA),
|
101 |
+
'tags_global_manage' => __('Edit subscription page link', WYSIJA),
|
102 |
+
'tags_global_browser' => __('View in browser link', WYSIJA),
|
103 |
+
'custom_fields_title' => __('Custom Fields', WYSIJA),
|
104 |
+
'custom_fields_list' => WJ_Field::get_all_names(),
|
105 |
+
// Themes specific labels
|
106 |
+
'theme_setting_default' => __('Saving default style...', WYSIJA),
|
107 |
+
'theme_saved_default' => __('Default style saved.', WYSIJA),
|
108 |
+
'theme_save_as_default' => __('Set as default style.', WYSIJA)
|
109 |
+
);
|
110 |
+
}
|
111 |
+
|
112 |
+
/* Data methods */
|
113 |
+
function getData($type = null) {
|
114 |
+
if($type !== null) {
|
115 |
+
if(array_key_exists($type, $this->_data)) {
|
116 |
+
return $this->_data[$type];
|
117 |
+
} else {
|
118 |
+
// return default value
|
119 |
+
$defaults = $this->getDefaultData();
|
120 |
+
return $defaults[$type];
|
121 |
+
}
|
122 |
+
}
|
123 |
+
return $this->_data;
|
124 |
+
}
|
125 |
+
|
126 |
+
function setData($value = null, $decode = false) {
|
127 |
+
if(!$value) {
|
128 |
+
$this->_data = $this->getDefaultData();
|
129 |
+
} else {
|
130 |
+
$this->_data = $value;
|
131 |
+
if($decode) {
|
132 |
+
$this->_data = $this->getDecoded('data');
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
function getEmailData($key = null) {
|
138 |
+
if($key === null) {
|
139 |
+
return $this->_email_data;
|
140 |
+
} else {
|
141 |
+
if(array_key_exists($key, $this->_email_data)) {
|
142 |
+
return $this->_email_data[$key];
|
143 |
+
}
|
144 |
+
}
|
145 |
+
return null;
|
146 |
+
}
|
147 |
+
|
148 |
+
function setEmailData($value = null) {
|
149 |
+
if($value !== null) {
|
150 |
+
$this->_email_data = $value;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
function getDefaultData() {
|
155 |
+
$dividersHelper = WYSIJA::get('dividers', 'helper');
|
156 |
+
return array(
|
157 |
+
'header' => array(
|
158 |
+
'alignment' => 'center',
|
159 |
+
'type' => 'header',
|
160 |
+
'static' => '1',
|
161 |
+
'text' => null,
|
162 |
+
'image' => array(
|
163 |
+
'src' => null,
|
164 |
+
'width' => 600,
|
165 |
+
'height' => 86,
|
166 |
+
'url' => null,
|
167 |
+
'alignment' => 'center',
|
168 |
+
'static' => '1'
|
169 |
+
)
|
170 |
+
),
|
171 |
+
'body' => array(),
|
172 |
+
'footer' => array(
|
173 |
+
'alignment' => 'center',
|
174 |
+
'type' => 'footer',
|
175 |
+
'static' => '1',
|
176 |
+
'text' => null,
|
177 |
+
'image' => array(
|
178 |
+
'src' => null,
|
179 |
+
'width' => 600,
|
180 |
+
'height' => 86,
|
181 |
+
'url' => null,
|
182 |
+
'alignment' => 'center',
|
183 |
+
'static' => '1'
|
184 |
+
)
|
185 |
+
),
|
186 |
+
'widgets' => array(
|
187 |
+
'divider' => array_merge($dividersHelper->getDefault(), array('type' => 'divider'))
|
188 |
+
)
|
189 |
+
);
|
190 |
+
}
|
191 |
+
|
192 |
+
/* Styles methods */
|
193 |
+
function getStyles($keys = null) {
|
194 |
+
if($keys === null) return $this->_styles;
|
195 |
+
|
196 |
+
if(!is_array($keys)) {
|
197 |
+
$keys = array($keys);
|
198 |
+
}
|
199 |
+
$output = array();
|
200 |
+
for($i=0; $i<count($keys);$i++) {
|
201 |
+
if(isset($this->_styles[$keys[$i]])) {
|
202 |
+
$output = array_merge($output, $this->_styles[$keys[$i]]);
|
203 |
+
}
|
204 |
+
}
|
205 |
+
return $output;
|
206 |
+
}
|
207 |
+
|
208 |
+
function getStyle($key, $subkey) {
|
209 |
+
$styles = $this->getStyles($key);
|
210 |
+
return $styles[$subkey];
|
211 |
+
}
|
212 |
+
|
213 |
+
function setStyles($value = null, $decode = false) {
|
214 |
+
if(!$value) {
|
215 |
+
$this->_styles = $this->getDefaultStyles();
|
216 |
+
} else {
|
217 |
+
$this->_styles = $value;
|
218 |
+
if($decode) {
|
219 |
+
$this->_styles = $this->getDecoded('styles');
|
220 |
+
}
|
221 |
+
}
|
222 |
+
}
|
223 |
+
|
224 |
+
function getDefaultStyles() {
|
225 |
+
|
226 |
+
$defaults = array(
|
227 |
+
'html' => array(
|
228 |
+
'background' => 'FFFFFF'
|
229 |
+
),
|
230 |
+
'header' => array(
|
231 |
+
'background' => 'FFFFFF'
|
232 |
+
),
|
233 |
+
'body' => array(
|
234 |
+
'color' => '000000',
|
235 |
+
'family' => 'Arial',
|
236 |
+
'size' => $this->TEXT_SIZES[5],
|
237 |
+
'background' => 'FFFFFF'
|
238 |
+
),
|
239 |
+
'footer' => array(
|
240 |
+
'color' => '000000',
|
241 |
+
'family' => 'Arial',
|
242 |
+
'size' => $this->TEXT_SIZES[5],
|
243 |
+
'background' => 'cccccc'
|
244 |
+
),
|
245 |
+
'h1' => array(
|
246 |
+
'color' => '000000',
|
247 |
+
'family' => 'Arial',
|
248 |
+
'size' => $this->TITLE_SIZES[6]
|
249 |
+
),
|
250 |
+
'h2' => array(
|
251 |
+
'color' => '424242',
|
252 |
+
'family' => 'Arial',
|
253 |
+
'size' => $this->TITLE_SIZES[5]
|
254 |
+
),
|
255 |
+
'h3' => array(
|
256 |
+
'color' => '424242',
|
257 |
+
'family' => 'Arial',
|
258 |
+
'size' => $this->TITLE_SIZES[4]
|
259 |
+
),
|
260 |
+
'a' => array(
|
261 |
+
'color' => '4a91b0',
|
262 |
+
'underline' => false
|
263 |
+
),
|
264 |
+
'unsubscribe' => array(
|
265 |
+
'color' => '000000'
|
266 |
+
),
|
267 |
+
'viewbrowser' => array(
|
268 |
+
'color' => '000000',
|
269 |
+
'family' => 'Arial',
|
270 |
+
'size' => $this->VIEWBROWSER_SIZES[4]
|
271 |
+
)
|
272 |
+
);
|
273 |
+
|
274 |
+
// get default selected theme
|
275 |
+
$model_config = WYSIJA::get('config', 'model');
|
276 |
+
$default_theme = $model_config->getValue('newsletter_default_theme', 'default');
|
277 |
+
|
278 |
+
if($default_theme === 'default') {
|
279 |
+
return $defaults;
|
280 |
+
} else {
|
281 |
+
$helper_themes = WYSIJA::get('themes', 'helper');
|
282 |
+
$stylesheet = $helper_themes->getStylesheet($default_theme);
|
283 |
+
|
284 |
+
$styles = array();
|
285 |
+
// look for each tags
|
286 |
+
foreach($defaults as $tag => $values) {
|
287 |
+
// look for css rules
|
288 |
+
preg_match('/\.?'.$tag.'\s?{(.+)}/Ui', $stylesheet, $matches);
|
289 |
+
if(isset($matches[1])) {
|
290 |
+
// extract styles
|
291 |
+
$styles[$tag] = $this->extractStyles($matches[1]);
|
292 |
+
} else {
|
293 |
+
// fallback to default
|
294 |
+
$styles[$tag] = $defaults[$tag];
|
295 |
+
}
|
296 |
+
}
|
297 |
+
|
298 |
+
return $styles;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
function getApplicationData() {
|
303 |
+
$app = array();
|
304 |
+
|
305 |
+
$app['domain'] = WJ_Utils::get_domain();
|
306 |
+
|
307 |
+
return $app;
|
308 |
+
}
|
309 |
+
|
310 |
+
/* Editor methods */
|
311 |
+
function renderEditor() {
|
312 |
+
$this->setContext('editor');
|
313 |
+
|
314 |
+
if($this->isDataValid() === false) {
|
315 |
+
throw new Exception('data is not valid');
|
316 |
+
} else {
|
317 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
318 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
319 |
+
|
320 |
+
// get company addressfrom settings
|
321 |
+
$config=WYSIJA::get("config","model");
|
322 |
+
|
323 |
+
$data = array(
|
324 |
+
'header' => $this->renderEditorHeader(),
|
325 |
+
'body' => $this->renderEditorBody(),
|
326 |
+
'footer' => $this->renderEditorFooter(),
|
327 |
+
'unsubscribe' => $config->emailFooterLinks(true),
|
328 |
+
'company_address' => nl2br($config->getValue('company_address')),
|
329 |
+
'is_debug' => $this->isDebug(),
|
330 |
+
'i18n' => $this->getTranslations()
|
331 |
+
);
|
332 |
+
|
333 |
+
$viewbrowser = $config->viewInBrowserLink(true);
|
334 |
+
if($viewbrowser) {
|
335 |
+
$data['viewbrowser'] = $viewbrowser;
|
336 |
+
}
|
337 |
+
|
338 |
+
return $helper_render_engine->render($data, 'templates/editor/editor_template.html');
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
function renderEditorHeader($data = null) {
|
343 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
344 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
345 |
+
$helper_render_engine->setStripSpecialchars(true);
|
346 |
+
|
347 |
+
if($data !== null) {
|
348 |
+
$block = $data;
|
349 |
+
} else {
|
350 |
+
$block = $this->getData('header');
|
351 |
+
}
|
352 |
+
|
353 |
+
$data = array_merge($block, array('i18n' => $this->getTranslations()));
|
354 |
+
return $helper_render_engine->render($data, 'templates/editor/header_template.html');
|
355 |
+
}
|
356 |
+
|
357 |
+
function renderEditorBody() {
|
358 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
359 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
360 |
+
|
361 |
+
$blocks = $this->getData('body');
|
362 |
+
if(empty($blocks)) return '';
|
363 |
+
|
364 |
+
$body = '';
|
365 |
+
foreach($blocks as $key => $block) {
|
366 |
+
// generate block template
|
367 |
+
$data = array_merge($block, array('i18n' => $this->getTranslations()));
|
368 |
+
$body .= $helper_render_engine->render($data, 'templates/editor/block_template.html');
|
369 |
+
}
|
370 |
+
|
371 |
+
return $body;
|
372 |
+
}
|
373 |
+
|
374 |
+
function renderEditorFooter($data = null)
|
375 |
+
{
|
376 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
377 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
378 |
+
|
379 |
+
if($data !== null) {
|
380 |
+
$block = $data;
|
381 |
+
} else {
|
382 |
+
$block = $this->getData('footer');
|
383 |
+
}
|
384 |
+
|
385 |
+
$data = array_merge($block, array('i18n' => $this->getTranslations()));
|
386 |
+
|
387 |
+
return $helper_render_engine->render($data, 'templates/editor/footer_template.html');
|
388 |
+
}
|
389 |
+
|
390 |
+
function renderEditorBlock($block = array()) {
|
391 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
392 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
393 |
+
$helper_render_engine->setStripSpecialchars(true);
|
394 |
+
|
395 |
+
$block['i18n'] = $this->getTranslations();
|
396 |
+
|
397 |
+
return $helper_render_engine->render($block, 'templates/editor/block_'.$block['type'].'.html');
|
398 |
+
}
|
399 |
+
|
400 |
+
/* render auto post */
|
401 |
+
function renderEditorAutoPost($posts = array(), $params = array()) {
|
402 |
+
$output = '';
|
403 |
+
if(isset($params['post_ids'])) {
|
404 |
+
$output .= '<input type="hidden" name="post_ids" value="'.$params['post_ids'].'" />';
|
405 |
+
}
|
406 |
+
|
407 |
+
// check if there are posts to display
|
408 |
+
if(empty($posts)) {
|
409 |
+
// if not, display a message stating that the latest content has been sent
|
410 |
+
$block = array(
|
411 |
+
'no-block' => true,
|
412 |
+
'type' => 'content',
|
413 |
+
'alignment' => 'center',
|
414 |
+
'background_color' => $params['bgcolor1'],
|
415 |
+
'image' => null,
|
416 |
+
'text' => array('value' => base64_encode(__('Latest content already sent.', WYSIJA)))
|
417 |
+
);
|
418 |
+
$output .= $this->renderEditorBlock($block);
|
419 |
+
} else {
|
420 |
+
// otherwise, render all posts into blocks
|
421 |
+
$output .= $this->renderPostsToBlocks($posts, $params, 'autopost');
|
422 |
+
}
|
423 |
+
|
424 |
+
return $output;
|
425 |
+
}
|
426 |
+
|
427 |
+
function renderEmailAutoPost($posts = array(), $params = array()) {
|
428 |
+
if(empty($posts)) {
|
429 |
+
return '';
|
430 |
+
} else {
|
431 |
+
return $this->renderPostsToBlocks($posts, $params, 'autopost');
|
432 |
+
}
|
433 |
+
}
|
434 |
+
|
435 |
+
function renderEmailBlock($block = array()) {
|
436 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
437 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
438 |
+
$helper_render_engine->setStripSpecialchars(true);
|
439 |
+
|
440 |
+
// set block background color
|
441 |
+
$background_color = null;
|
442 |
+
if(isset($block['background_color'])) {
|
443 |
+
$background_color = $block['background_color'];
|
444 |
+
}
|
445 |
+
|
446 |
+
return $this->applyInlineStyles(
|
447 |
+
'body',
|
448 |
+
$helper_render_engine->render($block, 'templates/email_v3/block_'.$block['type'].'.html'),
|
449 |
+
array('background_color' => $background_color)
|
450 |
+
);
|
451 |
+
}
|
452 |
+
|
453 |
+
function renderPostsToBlocks($posts = array(), $params = array(), $mode = 'post') {
|
454 |
+
$html = '';
|
455 |
+
$context = $this->getContext();
|
456 |
+
|
457 |
+
$helper_articles = WYSIJA::get('articles', 'helper');
|
458 |
+
|
459 |
+
if($params['title_tag'] === 'list') {
|
460 |
+
$list = '<ul class="align-'.$params['title_alignment'].'">';
|
461 |
+
}
|
462 |
+
|
463 |
+
// make sure empty bgcolors are set to transparent
|
464 |
+
if(!isset($params['bgcolor1']) || (isset($params['bgcolor1']) && strlen($params['bgcolor1']) === 0)) {
|
465 |
+
$params['bgcolor1'] = '';
|
466 |
+
}
|
467 |
+
if(!isset($params['bgcolor2']) || (isset($params['bgcolor2']) && strlen($params['bgcolor2']) === 0)) {
|
468 |
+
$params['bgcolor2'] = '';
|
469 |
+
}
|
470 |
+
|
471 |
+
// BEGIN - posts
|
472 |
+
for($i = 0, $count = count($posts); $i < $count; $i++) {
|
473 |
+
$post = $posts[$i];
|
474 |
+
$is_odd = (bool)($i % 2);
|
475 |
+
$is_last = (bool)($i === ($count - 1));
|
476 |
+
|
477 |
+
// set default background color to transparent
|
478 |
+
$background_color = '';
|
479 |
+
|
480 |
+
// set background color for each post
|
481 |
+
if($is_odd === false) $background_color = $params['bgcolor1'];
|
482 |
+
if($is_odd === true) $background_color = $params['bgcolor2'];
|
483 |
+
|
484 |
+
if($params['image_alignment'] === 'alternate') {
|
485 |
+
$image_alignment = ($is_odd === false) ? 'left' : 'right';
|
486 |
+
} else if($params['image_alignment'] === 'none') {
|
487 |
+
$image_alignment = 'left';
|
488 |
+
$post['post_image'] = null;
|
489 |
+
} else {
|
490 |
+
$image_alignment = $params['image_alignment'];
|
491 |
+
}
|
492 |
+
|
493 |
+
// build basic block data
|
494 |
+
$block = array(
|
495 |
+
'position' => $i,
|
496 |
+
'type' => 'content',
|
497 |
+
'alignment' => $image_alignment,
|
498 |
+
'background_color' => $background_color,
|
499 |
+
'image' => null,
|
500 |
+
'text' => null
|
501 |
+
);
|
502 |
+
|
503 |
+
// in case of autopost, we need to remove the "block" container because each block will be rendered within the autopost block
|
504 |
+
if($mode === 'autopost') {
|
505 |
+
$block['no-block'] = true;
|
506 |
+
}
|
507 |
+
|
508 |
+
// get title
|
509 |
+
$title = $helper_articles->getPostTitle($post, $params);
|
510 |
+
|
511 |
+
// if post content is title, force title position inside
|
512 |
+
if($params['post_content'] === 'title') {
|
513 |
+
$params['title_position'] = 'inside';
|
514 |
+
}
|
515 |
+
|
516 |
+
// only display titles as a list
|
517 |
+
if($params['title_tag'] === 'list') {
|
518 |
+
$list .= $title;
|
519 |
+
continue;
|
520 |
+
}
|
521 |
+
|
522 |
+
// if the title is outside, generate its own block
|
523 |
+
if($params['title_position'] === 'outside') {
|
524 |
+
// generate title
|
525 |
+
$title_block = array_merge($block, array(
|
526 |
+
'alignment' => 'left',
|
527 |
+
'text' => array(
|
528 |
+
'value' => base64_encode($title)
|
529 |
+
)
|
530 |
+
));
|
531 |
+
|
532 |
+
if($context === 'editor') {
|
533 |
+
$html .= $this->renderEditorBlock($title_block);
|
534 |
+
} else if($context === 'email') {
|
535 |
+
$html .= $this->renderEmailBlock($title_block);
|
536 |
+
}
|
537 |
+
}
|
538 |
+
|
539 |
+
// generate content
|
540 |
+
$content_block = array_merge($block, $helper_articles->convertPostToBlock($post, array_merge($params, array('image_alignment' => $image_alignment))));
|
541 |
+
|
542 |
+
if($context === 'editor') {
|
543 |
+
$html .= $this->renderEditorBlock($content_block);
|
544 |
+
} else if($context === 'email') {
|
545 |
+
$html .= $this->renderEmailBlock($content_block);
|
546 |
+
}
|
547 |
+
|
548 |
+
// display divider if required
|
549 |
+
if(isset($params['divider']) && ($params['divider'] !== null && $is_last === false)) {
|
550 |
+
// display divider only if there is one and if it's not the last post
|
551 |
+
$divider_block = array_merge(
|
552 |
+
array(
|
553 |
+
'type' => 'divider',
|
554 |
+
'no-block' => ($mode === 'autopost')
|
555 |
+
),
|
556 |
+
$params['divider']
|
557 |
+
);
|
558 |
+
|
559 |
+
if($context === 'editor') {
|
560 |
+
$html .= $this->renderEditorBlock($divider_block);
|
561 |
+
} else if($context === 'email') {
|
562 |
+
$html .= $this->renderEmailBlock($divider_block);
|
563 |
+
}
|
564 |
+
}
|
565 |
+
}
|
566 |
+
// END - Posts
|
567 |
+
|
568 |
+
if($params['title_tag'] === 'list') {
|
569 |
+
$list .= '</ul>';
|
570 |
+
$list_block = array_merge($block, array(
|
571 |
+
'alignment' => 'center',
|
572 |
+
'type' => 'content',
|
573 |
+
'text' => array(
|
574 |
+
'value' => base64_encode($list)
|
575 |
+
)
|
576 |
+
));
|
577 |
+
$html .= $this->renderEditorBlock($list_block);
|
578 |
+
}
|
579 |
+
|
580 |
+
return $html;
|
581 |
+
}
|
582 |
+
|
583 |
+
/* render draggable images list */
|
584 |
+
function renderImages($data = array()) {
|
585 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
586 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
587 |
+
|
588 |
+
return $helper_render_engine->render(array('images' => $data), 'templates/toolbar/images.html');
|
589 |
+
}
|
590 |
+
|
591 |
+
/* render themes list */
|
592 |
+
function renderThemes() {
|
593 |
+
$themes = array();
|
594 |
+
$hThemes = WYSIJA::get('themes', 'helper');
|
595 |
+
|
596 |
+
$installed = $hThemes->getInstalled();
|
597 |
+
|
598 |
+
// get default selected theme
|
599 |
+
$model_config = WYSIJA::get('config', 'model');
|
600 |
+
$default_theme = $model_config->getValue('newsletter_default_theme', 'default');
|
601 |
+
|
602 |
+
if(empty($installed)) {
|
603 |
+
return '';
|
604 |
+
} else {
|
605 |
+
foreach($installed as $theme) {
|
606 |
+
$theme_info = $hThemes->getInformation($theme);
|
607 |
+
$theme_info['is_selected'] = (bool)($default_theme === $theme);
|
608 |
+
$themes[] = $theme_info;
|
609 |
+
}
|
610 |
+
}
|
611 |
+
|
612 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
613 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
614 |
+
|
615 |
+
return $helper_render_engine->render(array('themes' => $themes, 'i18n' => $this->getTranslations()), 'templates/toolbar/themes.html');
|
616 |
+
}
|
617 |
+
|
618 |
+
function renderThemeStyles($theme = 'default') {
|
619 |
+
$this->setContext('editor');
|
620 |
+
|
621 |
+
$hThemes = WYSIJA::get('themes', 'helper');
|
622 |
+
$stylesheet = $hThemes->getStylesheet($theme);
|
623 |
+
|
624 |
+
if($stylesheet === NULL) {
|
625 |
+
// load default settings
|
626 |
+
$this->setStyles(null);
|
627 |
+
} else {
|
628 |
+
// a stylesheet has been found, let's extract styles
|
629 |
+
$styles = array();
|
630 |
+
$defaults = $this->getDefaultStyles();
|
631 |
+
// look for each tags
|
632 |
+
foreach($defaults as $tag => $values) {
|
633 |
+
// look for css rules
|
634 |
+
preg_match('/\.?'.$tag.'\s?{(.+)}/Ui', $stylesheet, $matches);
|
635 |
+
if(isset($matches[1])) {
|
636 |
+
// extract styles
|
637 |
+
$styles[$tag] = $this->extractStyles($matches[1]);
|
638 |
+
} else {
|
639 |
+
// fallback to default
|
640 |
+
$styles[$tag] = $defaults[$tag];
|
641 |
+
}
|
642 |
+
}
|
643 |
+
$this->setStyles($styles);
|
644 |
+
}
|
645 |
+
|
646 |
+
return array(
|
647 |
+
'css' => $this->renderStyles(),
|
648 |
+
'form' => $this->renderStylesBar()
|
649 |
+
);
|
650 |
+
}
|
651 |
+
|
652 |
+
function extractStyles($raw) {
|
653 |
+
$rules = explode(';', $raw);
|
654 |
+
$output = array();
|
655 |
+
foreach($rules as $rule) {
|
656 |
+
$sub_property = false;
|
657 |
+
$combo = explode(':', $rule);
|
658 |
+
if(count($combo) === 2) {
|
659 |
+
list($property, $value) = $combo;
|
660 |
+
// remove leading and trailing space
|
661 |
+
$property = trim($property);
|
662 |
+
$value = trim($value);
|
663 |
+
} else {
|
664 |
+
continue;
|
665 |
+
}
|
666 |
+
|
667 |
+
switch($property) {
|
668 |
+
case 'background':
|
669 |
+
case 'background-color':
|
670 |
+
$property = 'background';
|
671 |
+
case 'color':
|
672 |
+
// remove # from color
|
673 |
+
$value = str_replace('#', '', $value);
|
674 |
+
// check if its a 3 chars color
|
675 |
+
if(strlen($value) === 3) {
|
676 |
+
$value = sprintf('%s%s%s%s%s%s', substr($value, 0, 1), substr($value, 0, 1), substr($value, 1, 1), substr($value, 1, 1), substr($value, 2, 1), substr($value, 2, 1));
|
677 |
+
}
|
678 |
+
break;
|
679 |
+
case 'font-family':
|
680 |
+
$property = 'family';
|
681 |
+
$fonts = explode(',', $value);
|
682 |
+
$value = array_shift($fonts);
|
683 |
+
break;
|
684 |
+
case 'font-size':
|
685 |
+
$property = 'size';
|
686 |
+
case 'height':
|
687 |
+
$value = (int)$value;
|
688 |
+
break;
|
689 |
+
case 'text-decoration':
|
690 |
+
$property = 'underline';
|
691 |
+
$value = ($value === 'none') ? '-1' : '1';
|
692 |
+
break;
|
693 |
+
case 'border-color':
|
694 |
+
// remove # from color
|
695 |
+
$value = str_replace('#', '', $value);
|
696 |
+
// check if its a 3 chars color
|
697 |
+
if(strlen($value) === 3) {
|
698 |
+
$value = sprintf('%s%s%s%s%s%s', substr($value, 0, 1), substr($value, 0, 1), substr($value, 1, 1), substr($value, 1, 1), substr($value, 2, 1), substr($value, 2, 1));
|
699 |
+
}
|
700 |
+
list($property, $sub_property) = explode('-', $property);
|
701 |
+
break;
|
702 |
+
case 'border-size':
|
703 |
+
$value = (int)$value;
|
704 |
+
list($property, $sub_property) = explode('-', $property);
|
705 |
+
break;
|
706 |
+
case 'border-style':
|
707 |
+
list($property, $sub_property) = explode('-', $property);
|
708 |
+
break;
|
709 |
+
}
|
710 |
+
|
711 |
+
if($sub_property !== FALSE) {
|
712 |
+
$output[$property][$sub_property] = $value;
|
713 |
+
} else {
|
714 |
+
$output[$property] = $value;
|
715 |
+
}
|
716 |
+
}
|
717 |
+
return $output;
|
718 |
+
}
|
719 |
+
|
720 |
+
function renderTheme($theme = 'default') {
|
721 |
+
$output = array(
|
722 |
+
'header' => null,
|
723 |
+
'footer' => null,
|
724 |
+
'divider' => null
|
725 |
+
);
|
726 |
+
|
727 |
+
$hThemes = WYSIJA::get('themes', 'helper');
|
728 |
+
$data = $hThemes->getData($theme);
|
729 |
+
|
730 |
+
if($data['header'] !== NULL) {
|
731 |
+
$output['header'] = $this->renderEditorHeader($data['header']);
|
732 |
+
}
|
733 |
+
|
734 |
+
if($data['footer'] !== NULL) {
|
735 |
+
$output['footer'] = $this->renderEditorFooter($data['footer']);
|
736 |
+
}
|
737 |
+
|
738 |
+
if($data['divider'] !== NULL) {
|
739 |
+
$output['divider'] = $this->renderEditorBlock(array_merge(array('no-block' => true), $data['divider']));
|
740 |
+
$output['divider_options'] = $data['divider'];
|
741 |
+
}
|
742 |
+
|
743 |
+
return $output;
|
744 |
+
}
|
745 |
+
|
746 |
+
/* render styles bar */
|
747 |
+
function renderStylesBar() {
|
748 |
+
$this->setContext('editor');
|
749 |
+
|
750 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
751 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
752 |
+
$helper_render_engine->setStripSpecialchars(true);
|
753 |
+
|
754 |
+
$data = $this->getStyles();
|
755 |
+
$data['i18n'] = $this->getTranslations();
|
756 |
+
$data['TEXT_SIZES'] = $this->TEXT_SIZES;
|
757 |
+
$data['VIEWBROWSER_SIZES'] = $this->VIEWBROWSER_SIZES;
|
758 |
+
$data['TITLE_SIZES'] = $this->TITLE_SIZES;
|
759 |
+
$data['FONTS'] = $this->FONTS;
|
760 |
+
|
761 |
+
return $helper_render_engine->render($data, 'templates/toolbar/styles.html');
|
762 |
+
}
|
763 |
+
|
764 |
+
function formatStyles($styles = array()) {
|
765 |
+
if(empty($styles)) return;
|
766 |
+
|
767 |
+
$data = array();
|
768 |
+
foreach($styles as $style => $value) {
|
769 |
+
$stylesArray = explode('-', $style);
|
770 |
+
if(count($stylesArray) === 2) {
|
771 |
+
$data[$stylesArray[0]][$stylesArray[1]] = $value;
|
772 |
+
} else if(count($stylesArray) === 3) {
|
773 |
+
// handle transparent colors
|
774 |
+
if($stylesArray[2] === 'transparent') {
|
775 |
+
$data[$stylesArray[0]][$stylesArray[1]] = $stylesArray[2];
|
776 |
+
} else {
|
777 |
+
$data[$stylesArray[0]][$stylesArray[1]][$stylesArray[2]] = $value;
|
778 |
+
}
|
779 |
+
}
|
780 |
+
}
|
781 |
+
|
782 |
+
return $data;
|
783 |
+
}
|
784 |
+
|
785 |
+
function getContext() {
|
786 |
+
return $this->_context;
|
787 |
+
}
|
788 |
+
|
789 |
+
function setContext($value = null) {
|
790 |
+
if($value !== null) $this->_context = $value;
|
791 |
+
}
|
792 |
+
|
793 |
+
function isDebug() {
|
794 |
+
return ($this->_debug === true);
|
795 |
+
}
|
796 |
+
|
797 |
+
function getEncoded($type = 'data') {
|
798 |
+
return base64_encode(serialize($this->{'get'.ucfirst($type)}()));
|
799 |
+
}
|
800 |
+
|
801 |
+
function getDecoded($type = 'data') {
|
802 |
+
return unserialize(base64_decode($this->{'get'.ucfirst($type)}()));
|
803 |
+
}
|
804 |
+
|
805 |
+
/* methods */
|
806 |
+
function isDataValid() {
|
807 |
+
return ($this->getData() !== null);
|
808 |
+
}
|
809 |
+
|
810 |
+
/* Styles methods */
|
811 |
+
function renderStyles() {
|
812 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
813 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
814 |
+
$helper_render_engine->setStripSpecialchars(true);
|
815 |
+
$helper_render_engine->setInline(true);
|
816 |
+
|
817 |
+
$data = $this->getStyles();
|
818 |
+
$data['context'] = $this->getContext();
|
819 |
+
|
820 |
+
// right to left language property
|
821 |
+
if(function_exists('is_rtl')) {
|
822 |
+
$data['is_rtl'] = is_rtl();
|
823 |
+
} else {
|
824 |
+
$data['is_rtl'] = false;
|
825 |
+
}
|
826 |
+
|
827 |
+
switch($data['context']) {
|
828 |
+
case 'editor':
|
829 |
+
$helper_render_engine->setStripSpecialchars(false);
|
830 |
+
$data['viewbrowser_container'] = '#wysija_viewbrowser';
|
831 |
+
$data['wysija_container'] = '#wysija_wrapper';
|
832 |
+
$data['header_container'] = '#wysija_header';
|
833 |
+
$data['body_container'] = '#wysija_body';
|
834 |
+
$data['text_container'] = '.editable';
|
835 |
+
$data['footer_container'] = '#wysija_footer';
|
836 |
+
$data['placeholder_container'] = '#wysija_block_placeholder';
|
837 |
+
$data['unsubscribe_container'] = '#wysija_unsubscribe';
|
838 |
+
return $helper_render_engine->render($data, 'styles/css-'.$data['context'].'.html');
|
839 |
+
break;
|
840 |
+
|
841 |
+
case 'email':
|
842 |
+
$helper_render_engine->setStripSpecialchars(true);
|
843 |
+
$data['viewbrowser_container'] = '#wysija_viewbrowser';
|
844 |
+
$data['wysija_container'] = '#wysija_wrapper';
|
845 |
+
$data['header_container'] = '#wysija_header_content';
|
846 |
+
$data['body_container'] = '#wysija_body_content';
|
847 |
+
$data['footer_container'] = '#wysija_footer_content';
|
848 |
+
$data['text_container'] = '.wysija-text-container';
|
849 |
+
$data['unsubscribe_container'] = '#wysija_unsubscribe';
|
850 |
+
|
851 |
+
return $helper_render_engine->render($data, 'templates/email_v3/css.html');
|
852 |
+
break;
|
853 |
+
}
|
854 |
+
}
|
855 |
+
|
856 |
+
/* Email methods */
|
857 |
+
function renderNotification($email = NULL) {
|
858 |
+
$this->_hide_viewbrowser = true;
|
859 |
+
$this->_hide_unsubscribe = true;
|
860 |
+
return $this->renderEmail($email);
|
861 |
+
}
|
862 |
+
|
863 |
+
function renderEmail($email = NULL) {
|
864 |
+
|
865 |
+
// fixes issue with pcre functions
|
866 |
+
@ini_set('pcre.backtrack_limit', 1000000);
|
867 |
+
|
868 |
+
$this->setContext('email');
|
869 |
+
|
870 |
+
if($this->isDataValid() === false) {
|
871 |
+
throw new Exception('data is not valid');
|
872 |
+
} else {
|
873 |
+
// set email data for later use
|
874 |
+
$this->setEmailData($email);
|
875 |
+
|
876 |
+
// render header
|
877 |
+
$data = array(
|
878 |
+
'viewbrowser' => $this->renderEmailViewBrowser(),
|
879 |
+
'header' => $this->renderEmailHeader(),
|
880 |
+
'body' => $this->renderEmailBody(),
|
881 |
+
'footer' => $this->renderEmailFooter(),
|
882 |
+
'unsubscribe' => $this->renderEmailUnsubscribe(),
|
883 |
+
'css' => $this->renderStyles(),
|
884 |
+
'styles' => $this->getStyles(),
|
885 |
+
'hide_viewbrowser' => $this->_hide_viewbrowser,
|
886 |
+
'hide_unsubscribe' => $this->_hide_unsubscribe
|
887 |
+
);
|
888 |
+
|
889 |
+
//right to left language property
|
890 |
+
if(function_exists('is_rtl')) {
|
891 |
+
$data['is_rtl'] = is_rtl();
|
892 |
+
} else {
|
893 |
+
$data['is_rtl'] = false;
|
894 |
+
}
|
895 |
+
|
896 |
+
// set email subject if specified
|
897 |
+
$data['subject'] = $this->getEmailData('subject');
|
898 |
+
|
899 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
900 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
901 |
+
$helper_render_engine->setStripSpecialchars(true);
|
902 |
+
$helper_render_engine->setInline(true);
|
903 |
+
|
904 |
+
try {
|
905 |
+
$template = $helper_render_engine->render($data, 'templates/email_v3/email_template.html');
|
906 |
+
return $template;
|
907 |
+
} catch(Exception $e) {
|
908 |
+
return '';
|
909 |
+
}
|
910 |
+
}
|
911 |
+
}
|
912 |
+
|
913 |
+
function renderEmailViewBrowser() {
|
914 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
915 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
916 |
+
$helper_render_engine->setStripSpecialchars(true);
|
917 |
+
|
918 |
+
$config=WYSIJA::get('config','model');
|
919 |
+
$data = $config->viewInBrowserLink();
|
920 |
+
if(!isset($data['link'])) {
|
921 |
+
return '';
|
922 |
+
} else {
|
923 |
+
// generate block template
|
924 |
+
$viewbrowser = $helper_render_engine->render($data, 'templates/email_v3/viewbrowser_template.html');
|
925 |
+
|
926 |
+
// apply inline styles
|
927 |
+
$viewbrowser = $this->applyInlineStyles('viewbrowser', $viewbrowser);
|
928 |
+
|
929 |
+
return $viewbrowser;
|
930 |
+
}
|
931 |
+
}
|
932 |
+
|
933 |
+
function renderEmailUnsubscribe() {
|
934 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
935 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
936 |
+
$helper_render_engine->setStripSpecialchars(true);
|
937 |
+
|
938 |
+
$config = WYSIJA::get('config','model');
|
939 |
+
|
940 |
+
$data = array(
|
941 |
+
'unsubscribe' => $config->emailFooterLinks(),
|
942 |
+
'company_address' => nl2br($config->getValue('company_address'))
|
943 |
+
);
|
944 |
+
|
945 |
+
// generate block template
|
946 |
+
$unsubscribe = $helper_render_engine->render($data, 'templates/email_v3/unsubscribe_template.html');
|
947 |
+
|
948 |
+
// apply inline styles
|
949 |
+
$unsubscribe = $this->applyInlineStyles('unsubscribe', $unsubscribe);
|
950 |
+
|
951 |
+
return $unsubscribe;
|
952 |
+
}
|
953 |
+
|
954 |
+
function renderEmailHeader() {
|
955 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
956 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
957 |
+
$helper_render_engine->setStripSpecialchars(true);
|
958 |
+
|
959 |
+
$data = $this->getData('header');
|
960 |
+
$data['styles'] = array('header' => $this->getStyles('header'));
|
961 |
+
|
962 |
+
// check for emptyness
|
963 |
+
if($data['text'] === NULL and $data['image']['static'] === TRUE) {
|
964 |
+
return NULL;
|
965 |
+
}
|
966 |
+
|
967 |
+
// set header content width
|
968 |
+
$data['block_width'] = 600;
|
969 |
+
|
970 |
+
// generate block template
|
971 |
+
$header = $helper_render_engine->render($data, 'templates/email_v3/header_template.html');
|
972 |
+
|
973 |
+
// apply inline styles
|
974 |
+
$header = $this->applyInlineStyles('header', $header);
|
975 |
+
|
976 |
+
return $header;
|
977 |
+
}
|
978 |
+
|
979 |
+
function encodeParameters($params = array()) {
|
980 |
+
// encode string parameters
|
981 |
+
$keys_to_encode = array('author_label', 'category_label', 'readmore');
|
982 |
+
foreach($keys_to_encode as $key) {
|
983 |
+
if(isset($params[$key]) && strlen(trim($params[$key])) > 0) {
|
984 |
+
$params[$key] = base64_encode(stripslashes($params[$key]));
|
985 |
+
}
|
986 |
+
}
|
987 |
+
return $params;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
988 |
}
|
989 |
|
990 |
function decodeParameters($params = array()) {
|
991 |
+
// decode string parameters
|
992 |
+
$keys_to_decode = array('author_label', 'category_label', 'readmore');
|
993 |
+
foreach($keys_to_decode as $key) {
|
994 |
+
if(isset($params[$key]) && strlen(trim($params[$key])) > 0) {
|
995 |
+
$params[$key] = base64_decode($params[$key]);
|
996 |
+
}
|
997 |
+
}
|
998 |
+
return $params;
|
999 |
}
|
1000 |
|
1001 |
+
function renderEmailBody() {
|
1002 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
1003 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
1004 |
+
$helper_render_engine->setStripSpecialchars(true);
|
1005 |
+
|
1006 |
+
$blocks = $this->getData('body');
|
1007 |
+
$styles = array('body' => $this->getStyles('body'));
|
1008 |
+
|
1009 |
+
// default newsletter type
|
1010 |
+
$newsletter_type = 'default';
|
1011 |
+
|
1012 |
+
// check if we need to interpret shortcodes
|
1013 |
+
$model_config = WYSIJA::get('config', 'model');
|
1014 |
+
$interpret_shortcode = (bool)$model_config->getValue('interp_shortcode');
|
1015 |
+
|
1016 |
+
$body = '';
|
1017 |
+
|
1018 |
+
// check if we are dealing with an auto newsletter
|
1019 |
+
$email = $this->getEmailData();
|
1020 |
+
if(isset($email['params']['autonl']) && !empty($email['params']['autonl'])) {
|
1021 |
+
// set newsletter type to automattic newsletter
|
1022 |
+
$newsletter_type = 'automatic';
|
1023 |
+
// reset category_ids
|
1024 |
+
$include_category_ids = array();
|
1025 |
+
$exclude_category_ids = array();
|
1026 |
+
|
1027 |
+
// posts data
|
1028 |
+
$first_subject = null;
|
1029 |
+
$post_count = 0;
|
1030 |
+
$post_ids = array();
|
1031 |
+
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
foreach($blocks as $key => $block) {
|
1035 |
+
// reset block HTML so as to avoid duplicates
|
1036 |
+
$blockHTML = '';
|
1037 |
+
|
1038 |
+
// specific background color
|
1039 |
+
$block_background_color = null;
|
1040 |
+
|
1041 |
+
// get background color if specified
|
1042 |
+
if(isset($block['background_color']) && strlen($block['background_color']) === 6) {
|
1043 |
+
$block_background_color = $block['background_color'];
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
// block width
|
1047 |
+
$block['block_width'] = 600;
|
1048 |
+
|
1049 |
+
if($block['type'] === 'auto-post') {
|
1050 |
+
// special case for auto post, we need to fetch posts, taking previously sent posts into account
|
1051 |
+
|
1052 |
+
// get email data
|
1053 |
+
//$email = $this->getEmailData();
|
1054 |
+
|
1055 |
+
// get block params
|
1056 |
+
$blockParams = $block['params'];
|
1057 |
+
|
1058 |
+
// format parameters
|
1059 |
+
$params = array();
|
1060 |
+
|
1061 |
+
$category_ids = array();
|
1062 |
+
$category_condition = 'include';
|
1063 |
+
|
1064 |
+
foreach($blockParams as $pairs) {
|
1065 |
+
// store category_ids in email for better performance on immediate sending of WP Posts.
|
1066 |
+
if($pairs['key'] === 'category_ids') {
|
1067 |
+
$pair_value = trim($pairs['value']);
|
1068 |
+
if(!empty($pair_value)) {
|
1069 |
+
$category_ids = explode(',', trim($pairs['value']));
|
1070 |
+
}
|
1071 |
+
}
|
1072 |
+
// store category condition (include / exclude) for same above reason.
|
1073 |
+
if($pairs['key'] === 'category_condition') {
|
1074 |
+
$category_condition = (in_array(trim($pairs['value']), array('include', 'exclude'))) ? trim($pairs['value']) : 'include';
|
1075 |
+
}
|
1076 |
+
$params[$pairs['key']] = $pairs['value'];
|
1077 |
+
}
|
1078 |
+
|
1079 |
+
// make sure we store category_ids
|
1080 |
+
if(!empty($category_ids)) {
|
1081 |
+
if($category_condition === 'include') {
|
1082 |
+
$include_category_ids = array_unique(array_merge($include_category_ids, $category_ids));
|
1083 |
+
}
|
1084 |
+
if($category_condition === 'exclude') {
|
1085 |
+
$exclude_category_ids = array_unique(array_merge($exclude_category_ids, $category_ids));
|
1086 |
+
}
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
// make sure empty bgcolors are set to transparent
|
1090 |
+
if(isset($params['bgcolor1']) && strlen($params['bgcolor1']) === 0) {
|
1091 |
+
$params['bgcolor1'] = 'transparent';
|
1092 |
+
}
|
1093 |
+
if(isset($params['bgcolor2']) && strlen($params['bgcolor2']) === 0) {
|
1094 |
+
$params['bgcolor2'] = 'transparent';
|
1095 |
+
}
|
1096 |
+
|
1097 |
+
// make sure the default params are set
|
1098 |
+
if(array_key_exists('autonl', $email['params']) === false) {
|
1099 |
+
$email['params']['autonl'] = array();
|
1100 |
+
}
|
1101 |
+
if(array_key_exists('articles', $email['params']['autonl']) === false) {
|
1102 |
+
$email['params']['autonl']['articles'] = array(
|
1103 |
+
'ids' => array(),
|
1104 |
+
'count' => 0,
|
1105 |
+
'first_subject' => ''
|
1106 |
+
);
|
1107 |
+
}
|
1108 |
+
|
1109 |
+
// exclude already sent post ids from selection
|
1110 |
+
if(!empty($email['params']['autonl']['articles']['ids'])) {
|
1111 |
+
$params['exclude'] = $email['params']['autonl']['articles']['ids'];
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
//we set the post_date to filter articles only older than that one
|
1115 |
+
if(isset($email['params']['autonl']['firstSend'])){
|
1116 |
+
$params['post_date'] = $email['params']['autonl']['firstSend'];
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
// if immediate let it know to the get post
|
1120 |
+
if(isset($email['params']['autonl']['articles']['immediatepostid'])){
|
1121 |
+
$params['include'] = $email['params']['autonl']['articles']['immediatepostid'];
|
1122 |
+
$params['post_limit'] = 1;
|
1123 |
+
}else{
|
1124 |
+
//we set the post_date to filter articles only older than the last time we sent articles
|
1125 |
+
if(isset($email['params']['autonl']['lastSend'])){
|
1126 |
+
$params['post_date'] = $email['params']['autonl']['lastSend'];
|
1127 |
+
}else{
|
1128 |
+
//get the latest child newsletter sent_at value
|
1129 |
+
$mEmail=WYSIJA::get('email','model');
|
1130 |
+
$mEmail->reset();
|
1131 |
+
$mEmail->orderBy('email_id','DESC');
|
1132 |
+
$lastEmailSent=$mEmail->getOne(false,array('campaign_id'=>$email['campaign_id'],'type'=>'1'));
|
1133 |
+
|
1134 |
+
if(!empty($lastEmailSent)) $params['post_date'] = $lastEmailSent['sent_at'];
|
1135 |
+
}
|
1136 |
+
}
|
1137 |
+
|
1138 |
+
// decode specific keys
|
1139 |
+
$params = $this->decodeParameters($params);
|
1140 |
+
|
1141 |
+
// include/exclude category_ids
|
1142 |
+
$params['include_category_ids'] = $include_category_ids;
|
1143 |
+
$params['exclude_category_ids'] = $exclude_category_ids;
|
1144 |
+
|
1145 |
+
// define which fields are required from the posts
|
1146 |
+
$params['post_fields'] = array('post_title', 'post_content', 'post_excerpt', 'post_author');
|
1147 |
+
|
1148 |
+
// check for already inserted posts
|
1149 |
+
if(!empty($post_ids)) {
|
1150 |
+
$params['exclude'] = $post_ids;
|
1151 |
+
}
|
1152 |
+
|
1153 |
+
// get posts for this block
|
1154 |
+
$model_wp_posts = WYSIJA::get('wp_posts','model');
|
1155 |
+
$posts = $model_wp_posts->get_posts($params);
|
1156 |
+
|
1157 |
+
// cleanup post and get image
|
1158 |
+
//$post_ids = array();
|
1159 |
+
//$post_count = 0;
|
1160 |
+
|
1161 |
+
// check if we have posts to display
|
1162 |
+
if(!empty($posts)) {
|
1163 |
+
// get divider if necessary
|
1164 |
+
if(isset($params['show_divider']) && $params['show_divider'] === 'yes') {
|
1165 |
+
if(isset($email['params']['divider'])) {
|
1166 |
+
// either from the email params
|
1167 |
+
$params['divider'] = $email['params']['divider'];
|
1168 |
+
} else {
|
1169 |
+
// get default divider otherwise
|
1170 |
+
$helper_dividers = WYSIJA::get('dividers', 'helper');
|
1171 |
+
$params['divider'] = $helper_dividers->getDefault();
|
1172 |
+
}
|
1173 |
+
}
|
1174 |
+
|
1175 |
+
$helper_articles = WYSIJA::get('articles', 'helper');
|
1176 |
+
|
1177 |
+
foreach($posts as $key => $post) {
|
1178 |
+
// assign first post title to autonl parameters (this is used to display the [newsletter:post_title] shortcode in the subject)
|
1179 |
+
if($first_subject === null && strlen(trim($posts[$key]['post_title'])) > 0) {
|
1180 |
+
$first_subject = trim($posts[$key]['post_title']);
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
// check if shortcodes should be interpreted (value comes from WP options)
|
1184 |
+
if($interpret_shortcode === true) {
|
1185 |
+
// interpret shortcodes
|
1186 |
+
$posts[$key]['post_content'] = apply_filters('the_content', $post['post_content']);
|
1187 |
+
}
|
1188 |
+
if($params['image_alignment'] !== 'none') {
|
1189 |
+
// get thumbnail
|
1190 |
+
$posts[$key]['post_image'] = $helper_articles->getImage($post);
|
1191 |
+
}
|
1192 |
+
|
1193 |
+
$post_ids[] = (int)$post['ID'];
|
1194 |
+
$post_count++;
|
1195 |
+
}
|
1196 |
+
// render html from post data and params
|
1197 |
+
$blockHTML = $this->renderEmailAutoPost($posts, $params);
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
// update email post ids sent
|
1201 |
+
//$email['params']['autonl']['articles']['ids'] = array_unique(array_merge($email['params']['autonl']['articles']['ids'], $post_ids));
|
1202 |
+
|
1203 |
+
$this->setEmailData($email);
|
1204 |
+
} else {
|
1205 |
+
// set styles
|
1206 |
+
$block['styles'] = $styles;
|
1207 |
+
// generate block template
|
1208 |
+
$blockHTML = $helper_render_engine->render($block, 'templates/email_v3/block_template.html');
|
1209 |
+
|
1210 |
+
if($block['type'] !== 'raw') {
|
1211 |
+
// apply inline styles
|
1212 |
+
$blockHTML = $this->applyInlineStyles('body', $blockHTML, array('background_color' => $block_background_color));
|
1213 |
+
}
|
1214 |
+
}
|
1215 |
+
|
1216 |
+
// append generated html to body
|
1217 |
+
if($blockHTML !== '') {
|
1218 |
+
// render each block
|
1219 |
+
$body .= $blockHTML;
|
1220 |
+
}
|
1221 |
+
}
|
1222 |
+
|
1223 |
+
if($newsletter_type === 'automatic') {
|
1224 |
+
$email = $this->getEmailData();
|
1225 |
+
|
1226 |
+
// store category ids
|
1227 |
+
$email['params']['autonl']['include_category_ids'] = $include_category_ids;
|
1228 |
+
$email['params']['autonl']['exclude_category_ids'] = $exclude_category_ids;
|
1229 |
+
|
1230 |
+
$email['params']['autonl']['articles']['count'] = $post_count;
|
1231 |
+
$email['params']['autonl']['articles']['first_subject'] = $first_subject;
|
1232 |
+
$email['params']['autonl']['articles']['ids'] = array_unique(array_merge($email['params']['autonl']['articles']['ids'], $post_ids));
|
1233 |
+
|
1234 |
+
$this->setEmailData($email);
|
1235 |
+
}
|
1236 |
+
|
1237 |
+
return $body;
|
1238 |
+
}
|
1239 |
+
|
1240 |
+
function renderEmailFooter() {
|
1241 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
1242 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
1243 |
+
$helper_render_engine->setStripSpecialchars(true);
|
1244 |
+
|
1245 |
+
$data = $this->getData('footer');
|
1246 |
+
$data['styles'] = array('footer' => $this->getStyles('footer'));
|
1247 |
+
|
1248 |
+
// check for emptyness
|
1249 |
+
if($data['text'] === NULL and $data['image']['static'] === TRUE) {
|
1250 |
+
return NULL;
|
1251 |
+
}
|
1252 |
+
|
1253 |
+
// set footer content width
|
1254 |
+
$data['block_width'] = 600;
|
1255 |
+
|
1256 |
+
// generate block template
|
1257 |
+
$footer = $helper_render_engine->render($data, 'templates/email_v3/footer_template.html');
|
1258 |
+
|
1259 |
+
// apply inline styles
|
1260 |
+
$footer = $this->applyInlineStyles('footer', $footer);
|
1261 |
+
|
1262 |
+
return $footer;
|
1263 |
+
}
|
1264 |
+
|
1265 |
+
/**
|
1266 |
+
* area : header, body, footer, unsubscribe, viewbrowser
|
1267 |
+
* block : raw html
|
1268 |
+
*/
|
1269 |
+
function applyInlineStyles($area, $block, $extra = array()) {
|
1270 |
+
$helper_render_engine = WYSIJA::get('render_engine', 'helper');
|
1271 |
+
$helper_render_engine->setTemplatePath(WYSIJA_EDITOR_TOOLS);
|
1272 |
+
$helper_render_engine->setInline(true);
|
1273 |
+
|
1274 |
+
$tags = array();
|
1275 |
+
$classes = array();
|
1276 |
+
|
1277 |
+
switch($area) {
|
1278 |
+
case 'header':
|
1279 |
+
case 'footer':
|
1280 |
+
$classes = array(
|
1281 |
+
'wysija-image-container alone-left' => array('margin' => '0', 'padding' => '0'),
|
1282 |
+
'wysija-image-container alone-center' => array('margin' => '0 auto 0 auto', 'padding' => '0', 'text-align' => 'center'),
|
1283 |
+
'wysija-image-container alone-right' => array('margin' => '0', 'padding' => '0')
|
1284 |
+
);
|
1285 |
+
break;
|
1286 |
+
|
1287 |
+
case 'body':
|
1288 |
+
// set class for links in titles
|
1289 |
+
$block = preg_replace_callback('#(<h([1|2|3])[^>]*>(.*)<\/h[1|2|3]>)#Ui',
|
1290 |
+
create_function('$matches', '$class = \'h\'.(int)$matches[2].\'-link\'; return str_replace(\'<a\', \'<a class="\'.$class.\'"\', $matches[0]);'),
|
1291 |
+
$block);
|
1292 |
+
|
1293 |
+
$tags = array(
|
1294 |
+
'h1' => array_merge($this->getStyles('h1'), array('word-wrap' => true, 'padding' => '0', 'margin' => '0 0 10px 0', 'font-weight' => 'normal', 'line-height' => '1.3em')),
|
1295 |
+
'h2' => array_merge($this->getStyles('h2'), array('word-wrap' => true, 'padding' => '0', 'margin' => '0 0 10px 0', 'font-weight' => 'normal', 'line-height' => '1.2em')),
|
1296 |
+
'h3' => array_merge($this->getStyles('h3'), array('word-wrap' => true, 'padding' => '0', 'margin' => '0 0 10px 0', 'font-weight' => 'normal', 'line-height' => '1.1em')),
|
1297 |
+
'p' => array_merge($this->getStyles('body'), array('word-wrap' => true, 'padding' => '3px 0 0 0', 'margin' => '0 0 1em 0', 'line-height' => '1.5em', 'vertical-align' => 'top')),
|
1298 |
+
'a' => array_merge($this->getStyles('body'), $this->getStyles('a')),
|
1299 |
+
'ul' => array('line-height' => '1.5em', 'margin' => '0 0 1em 0', 'padding' => '0'),
|
1300 |
+
'ol' => array('line-height' => '1.5em', 'margin' => '0 0 1em 0', 'padding' => '0'),
|
1301 |
+
'li' => array_merge($this->getStyles('body'), array('font-weight' => 'normal', 'list-type' => 'none', 'list-style-type' => 'disc', 'margin' => '0 0 0.7em 30px', 'padding' => '0'))
|
1302 |
+
);
|
1303 |
+
|
1304 |
+
$classes = array(
|
1305 |
+
'wysija-image-container alone-left' => array('margin' => '0', 'padding' => '0'),
|
1306 |
+
'wysija-image-container alone-center' => array('margin' => '1em auto 1em auto', 'padding' => '0', 'text-align' => 'center'),
|
1307 |
+
'wysija-image-container alone-right' => array('margin' => '0', 'padding' => '0'),
|
1308 |
+
'wysija-image-left' => array('vertical-align' => 'top'),
|
1309 |
+
'wysija-image-center' => array('margin' => '0 auto 0 auto', 'vertical-align' => 'top'),
|
1310 |
+
'wysija-image-right' => array('vertical-align' => 'top'),
|
1311 |
+
'wysija-image-container align-left' => array('float' => 'left', 'margin' => '0', 'padding' => '0'),
|
1312 |
+
'wysija-image-container align-center' => array('margin' => '0 auto 0 auto', 'text-align' => 'center', 'padding' => '0'),
|
1313 |
+
'wysija-image-container align-right' => array('float' => 'right', 'margin' => '0', 'padding' => '0'),
|
1314 |
+
'wysija-divider-container' => array('margin' => '0 auto 0 auto', 'padding' => '0', 'text-align' => 'center'),
|
1315 |
+
'h1-link' => array_merge($this->getStyles('h1'), $this->getStyles('a')),
|
1316 |
+
'h2-link' => array_merge($this->getStyles('h2'), $this->getStyles('a')),
|
1317 |
+
'h3-link' => array_merge($this->getStyles('h3'), $this->getStyles('a')),
|
1318 |
+
'align-left' => array('text-align' => 'left'),
|
1319 |
+
'align-center' => array('text-align' => 'center'),
|
1320 |
+
'align-right' => array('text-align' => 'right'),
|
1321 |
+
'align-justify' => array('text-align' => 'justify')
|
1322 |
+
);
|
1323 |
+
|
1324 |
+
// when an extra background_color is specified, apply it to paragraphs & links
|
1325 |
+
if(array_key_exists('background_color', $extra) and $extra['background_color'] !== null) {
|
1326 |
+
$tags['p']['background'] = $extra['background_color'];
|
1327 |
+
$tags['a']['background'] = $extra['background_color'];
|
1328 |
+
$tags['ul']['background'] = $extra['background_color'];
|
1329 |
+
$tags['li']['background'] = $extra['background_color'];
|
1330 |
+
// fixes issue on Outlook.com Mobile where h2 have a white background
|
1331 |
+
$tags['h2']['background'] = $extra['background_color'];
|
1332 |
+
$tags['p']['background'] = $extra['background_color'];
|
1333 |
+
} else {
|
1334 |
+
// default newsletter background
|
1335 |
+
// fixes issue on Outlook.com Mobile where h2 have a white background
|
1336 |
+
$tags['h2']['background'] = $this->getStyle('body', 'background');
|
1337 |
+
}
|
1338 |
+
break;
|
1339 |
+
|
1340 |
+
case 'unsubscribe':
|
1341 |
+
$tags = array(
|
1342 |
+
'a' => $this->getStyles('unsubscribe')
|
1343 |
+
);
|
1344 |
+
break;
|
1345 |
+
case 'viewbrowser':
|
1346 |
+
$tags = array(
|
1347 |
+
'a' => $this->getStyles('viewbrowser')
|
1348 |
+
);
|
1349 |
+
break;
|
1350 |
+
}
|
1351 |
+
|
1352 |
+
if(empty($tags) === FALSE) {
|
1353 |
+
|
1354 |
+
foreach($tags as $tag => $styles) {
|
1355 |
+
$styles = $this->splitSpacing($styles);
|
1356 |
+
$inlineStyles = $helper_render_engine->render(array_merge($styles, array('tag' => $tag)), 'styles/inline.html');
|
1357 |
+
$inlineStyles = preg_replace('/(\n*)/', '', $inlineStyles);
|
1358 |
+
$tags['#< *'.$tag.'((?:(?!style).)*)>#Ui'] = '<'.$tag.' style="'.$inlineStyles.'"$1>';
|
1359 |
+
unset($tags[$tag]);
|
1360 |
+
}
|
1361 |
+
|
1362 |
+
$block = preg_replace(array_keys($tags), $tags, $block);
|
1363 |
+
}
|
1364 |
+
|
1365 |
+
if(empty($classes) === FALSE) {
|
1366 |
+
foreach($classes as $class => $styles) {
|
1367 |
+
// split spacing styles
|
1368 |
+
$styles = $this->splitSpacing($styles);
|
1369 |
+
$inlineStyles = $helper_render_engine->render($styles, 'styles/inline.html');
|
1370 |
+
$inlineStyles = preg_replace('/(\n*)/', '', $inlineStyles);
|
1371 |
+
|
1372 |
+
if(in_array($class, array('h1-link', 'h2-link', 'h3-link'))) {
|
1373 |
+
$classes['#<([^ /]+) ((?:(?!>|style).)*)(?:style="([^"]*)")?((?:(?!>|style).)*)class="[^"]*'.$class.'[^"]*"((?:(?!>|style).)*)(?:style="([^"]*)")?((?:(?!>|style).)*)>#Ui'] = '<$1 $2$4$5$7 style="'.$inlineStyles.'">';
|
1374 |
+
} else {
|
1375 |
+
$classes['#<([^ /]+) ((?:(?!>|style).)*)(?:style="([^"]*)")?((?:(?!>|style).)*)class="[^"]*'.$class.'[^"]*"((?:(?!>|style).)*)(?:style="([^"]*)")?((?:(?!>|style).)*)>#Ui'] = '<$1 $2$4$5$7 style="$3$6'.$inlineStyles.'">';
|
1376 |
+
}
|
1377 |
+
unset($classes[$class]);
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
$styledBlock = preg_replace(array_keys($classes), $classes, $block);
|
1381 |
+
// Check if the preg_replace worked. Otherwise we simply return the original block
|
1382 |
+
if(strlen(trim($styledBlock)) > 0) {
|
1383 |
+
$block = $styledBlock;
|
1384 |
+
}
|
1385 |
+
}
|
1386 |
+
|
1387 |
+
// body
|
1388 |
+
if($area === 'body' && strlen($block) > 0) {
|
1389 |
+
// Outlook fixes
|
1390 |
+
// paragraph
|
1391 |
+
/*$block = preg_replace('#<\/p>#Ui', "<!--[if gte mso 9]></p><![endif]--></p>", $block);
|
1392 |
+
$block = preg_replace('#<p(.*)>#Ui', "\n<p$1><!--[if gte mso 9]></p><p class=\"wysija-fix-paragraph\"><![endif]-->", $block);
|
1393 |
+
// h2 titles
|
1394 |
+
$block = preg_replace('#<\/h2>#Ui', "<!--[if gte mso 9]></h2><![endif]--></h2>", $block);
|
1395 |
+
$block = preg_replace('#<h2(.*)>#Ui', "<h2$1><!--[if gte mso 9]></h2><h2 class=\"wysija-fix-h2\"><![endif]-->", $block);
|
1396 |
+
// h3 titles
|
1397 |
+
$block = preg_replace('#<\/h3>#Ui', "<!--[if gte mso 9]></h3><![endif]--></h3>", $block);
|
1398 |
+
$block = preg_replace('#<h3(.*)>#Ui', "<h3$1><!--[if gte mso 9]></h3><h3 class=\"wysija-fix-h3\"><![endif]-->", $block);
|
1399 |
+
|
1400 |
+
// lists
|
1401 |
+
$block = preg_replace('#<ol(.*)>#Ui', "\n<ul$1>", $block);
|
1402 |
+
$block = preg_replace('#<ul(.*)>#Ui', "\n<ul$1>", $block);
|
1403 |
+
$block = preg_replace('#<li(.*)>#Ui', "\n<li$1>", $block);
|
1404 |
+
|
1405 |
+
$pFixStyles = $this->splitSpacing(array_merge($this->getStyles('body'), array('padding' => '3px 0 0 0', 'margin' => '0 0 1.3em 0', 'line-height' => '1em', 'vertical-align' => 'top')));
|
1406 |
+
$h2FixStyles = $this->splitSpacing(array_merge($this->getStyles('h2'), array('padding' => '0', 'margin' => '0 0 10px 0', 'font-weight' => 'normal', 'line-height' => '1em')));
|
1407 |
+
$h3FixStyles = $this->splitSpacing(array_merge($this->getStyles('h3'), array('padding' => '0', 'margin' => '0 0 10px 0', 'font-weight' => 'normal', 'line-height' => '1em')));
|
1408 |
+
|
1409 |
+
// apply block background color to elements if specified
|
1410 |
+
if(array_key_exists('background_color', $extra) and $extra['background_color'] !== null) {
|
1411 |
+
$pFixStyles['background'] = $extra['background_color'];
|
1412 |
+
$h2FixStyles['background'] = $extra['background_color'];
|
1413 |
+
$h3FixStyles['background'] = $extra['background_color'];
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
$block = str_replace('class="wysija-fix-paragraph"', 'style="'.$helper_render_engine->render($pFixStyles, 'styles/inline.html').'"', $block);
|
1417 |
+
$block = str_replace('class="wysija-fix-h2"', 'style="'.$helper_render_engine->render($h2FixStyles, 'styles/inline.html').'"', $block);
|
1418 |
+
$block = str_replace('class="wysija-fix-h3"', 'style="'.$helper_render_engine->render($h3FixStyles, 'styles/inline.html').'"', $block);*/
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
return $block;
|
1422 |
+
}
|
1423 |
+
|
1424 |
+
function splitSpacing($styles) {
|
1425 |
+
foreach($styles as $property => $value) {
|
1426 |
+
if($property === 'margin' or $property === 'padding') {
|
1427 |
+
// extract multi-values
|
1428 |
+
$values = explode(' ', $value);
|
1429 |
+
|
1430 |
+
// split values depending on values count
|
1431 |
+
switch(count($values)) {
|
1432 |
+
case 1:
|
1433 |
+
$styles[$property.'-top'] = $values[0];
|
1434 |
+
$styles[$property.'-right'] = $values[0];
|
1435 |
+
$styles[$property.'-bottom'] = $values[0];
|
1436 |
+
$styles[$property.'-left'] = $values[0];
|
1437 |
+
break;
|
1438 |
+
case 2:
|
1439 |
+
$styles[$property.'-top'] = $values[0];
|
1440 |
+
$styles[$property.'-right'] = $values[1];
|
1441 |
+
$styles[$property.'-bottom'] = $values[0];
|
1442 |
+
$styles[$property.'-left'] = $values[1];
|
1443 |
+
break;
|
1444 |
+
case 4:
|
1445 |
+
$styles[$property.'-top'] = $values[0];
|
1446 |
+
$styles[$property.'-right'] = $values[1];
|
1447 |
+
$styles[$property.'-bottom'] = $values[2];
|
1448 |
+
$styles[$property.'-left'] = $values[3];
|
1449 |
+
break;
|
1450 |
+
}
|
1451 |
+
|
1452 |
+
// unset original value
|
1453 |
+
unset($styles[$property]);
|
1454 |
+
}
|
1455 |
+
}
|
1456 |
+
return $styles;
|
1457 |
+
}
|
1458 |
+
|
1459 |
+
function formatColor($color) {
|
1460 |
+
if(strlen(trim($color)) === 0 or $color === 'transparent') {
|
1461 |
+
return 'transparent';
|
1462 |
+
} else {
|
1463 |
+
return '#'.$color;
|
1464 |
+
}
|
1465 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1466 |
}
|
helpers/wp_tools.php
CHANGED
@@ -2,326 +2,339 @@
|
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_help_wp_tools extends WYSIJA_object{
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
}
|
2 |
defined('WYSIJA') or die('Restricted access');
|
3 |
class WYSIJA_help_wp_tools extends WYSIJA_object{
|
4 |
|
5 |
+
function WYSIJA_help_wp_tools(){
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* add wysija's default capabilities to the admin and super admin roles
|
11 |
+
*/
|
12 |
+
function set_default_rolecaps(){
|
13 |
+
//add role capabilities
|
14 |
+
//get the "administrator" role object
|
15 |
+
$rolesadmin=array('administrator','super_admin');
|
16 |
+
|
17 |
+
foreach($rolesadmin as $roladm){
|
18 |
+
$role = get_role($roladm);
|
19 |
+
if(!$role) continue;
|
20 |
+
//add wysija's capabilities to it so that other widgets can reuse it
|
21 |
+
$arr=array('wysija_newsletters','wysija_subscribers','wysija_config','wysija_theme_tab','wysija_style_tab', 'wysija_stats_dashboard');
|
22 |
+
|
23 |
+
foreach($arr as $arrkey){
|
24 |
+
if(!$role->has_cap($arrkey)) $role->add_cap( $arrkey );
|
25 |
+
}
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* get an array of WordPress roles with a numbered index
|
31 |
+
* @global type $wp_roles
|
32 |
+
* @return array
|
33 |
+
*/
|
34 |
+
function wp_get_roles() {
|
35 |
+
//Careful WordPress global
|
36 |
+
global $wp_roles;
|
37 |
+
$all_roles = $wp_roles->roles;
|
38 |
+
$editable_roles = apply_filters('editable_roles', $all_roles);
|
39 |
+
|
40 |
+
$rolearray=array();
|
41 |
+
$sum=6;
|
42 |
+
foreach($editable_roles as $keyrol => $roledetails){
|
43 |
+
switch($keyrol){
|
44 |
+
case 'super_admin':
|
45 |
+
$index=1;
|
46 |
+
break;
|
47 |
+
case 'administrator':
|
48 |
+
$index=2;
|
49 |
+
break;
|
50 |
+
case 'editor':
|
51 |
+
$index=3;
|
52 |
+
break;
|
53 |
+
case 'author':
|
54 |
+
$index=4;
|
55 |
+
break;
|
56 |
+
case 'contributor':
|
57 |
+
$index=5;
|
58 |
+
break;
|
59 |
+
case 'subscriber':
|
60 |
+
$index=6;
|
61 |
+
break;
|
62 |
+
default:
|
63 |
+
$sum++;
|
64 |
+
$index=$sum;
|
65 |
+
}
|
66 |
+
$rolearray[$index]=array('key'=>$keyrol,'name'=>$roledetails['name']);
|
67 |
+
}
|
68 |
+
ksort($rolearray);
|
69 |
+
return $rolearray;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* get an array of WordPress roles with a special capability of that role as index
|
74 |
+
* @global type $wp_roles
|
75 |
+
* @return array
|
76 |
+
*/
|
77 |
+
function wp_get_editable_roles() {
|
78 |
+
//Careful WordPress global
|
79 |
+
global $wp_roles;
|
80 |
+
|
81 |
+
$all_roles = $wp_roles->roles;
|
82 |
+
$editable_roles = apply_filters('editable_roles', $all_roles);
|
83 |
+
|
84 |
+
$possible_values=array();
|
85 |
+
foreach ( $all_roles as $role => $details ) {
|
86 |
+
$name = translate_user_role($details['name'] );
|
87 |
+
switch($role){
|
88 |
+
case 'administrator':
|
89 |
+
$keyrole='switch_themes';
|
90 |
+
break;
|
91 |
+
case 'editor':
|
92 |
+
$keyrole='moderate_comments';
|
93 |
+
break;
|
94 |
+
case 'author':
|
95 |
+
$keyrole='upload_files';
|
96 |
+
break;
|
97 |
+
case 'contributor':
|
98 |
+
$keyrole='edit_posts';
|
99 |
+
break;
|
100 |
+
case 'subscriber':
|
101 |
+
$keyrole='read';
|
102 |
+
break;
|
103 |
+
default:
|
104 |
+
$keyrole=$role;
|
105 |
+
}
|
106 |
+
$possible_values[$keyrole]=$name;
|
107 |
+
//$possible_values[key($details['capabilities'])]=$name;
|
108 |
+
}
|
109 |
+
|
110 |
+
return $possible_values;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* get roles by name ? Not so sure why use that function
|
115 |
+
* @global type $wp_roles
|
116 |
+
* @return array
|
117 |
+
*/
|
118 |
+
function wp_get_all_roles() {
|
119 |
+
//Careful WordPress global
|
120 |
+
global $wp_roles;
|
121 |
+
$all_roles = $wp_roles->get_names();
|
122 |
+
return $all_roles;
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* check whether there is a caching plugin active on this site, we were using that function at some point, it can be useful
|
127 |
+
* @global type $cache_enabled
|
128 |
+
* @global type $super_cache_enabled
|
129 |
+
* @return boolean
|
130 |
+
*/
|
131 |
+
function is_caching_active(){
|
132 |
+
$checkPlugins=array(
|
133 |
+
'wp-super-cache/wp-cache.php' ,
|
134 |
+
'w3-total-cache/w3-total-cache.php',
|
135 |
+
'quick-cache/quick-cache.php',
|
136 |
+
'hyper-cache/plugin.php'
|
137 |
+
);
|
138 |
+
|
139 |
+
foreach($checkPlugins as $pluginFileName){
|
140 |
+
if(WYSIJA::is_plugin_active($pluginFileName)){
|
141 |
+
switch($pluginFileName){
|
142 |
+
case 'wp-super-cache/wp-cache.php':
|
143 |
+
global $cache_enabled, $super_cache_enabled;
|
144 |
+
if(!(WP_CACHE && $cache_enabled && $super_cache_enabled)) continue(2);
|
145 |
+
break;
|
146 |
+
case 'w3-total-cache/w3-total-cache.php':
|
147 |
+
$config = & w3_instance("W3_Config");
|
148 |
+
if(!(WP_CACHE && $config->get_boolean("pgcache.enabled"))) continue(2);
|
149 |
+
|
150 |
+
break;
|
151 |
+
case 'quick-cache/quick-cache.php':
|
152 |
+
if(!(WP_CACHE && $GLOBALS["WS_PLUGIN__"]["qcache"]["o"]["enabled"])) continue(2);
|
153 |
+
break;
|
154 |
+
case 'hyper-cache/plugin.php':
|
155 |
+
if(!(WP_CACHE)) continue(2);
|
156 |
+
break;
|
157 |
+
default:
|
158 |
+
continue(2);
|
159 |
+
}
|
160 |
+
return true;
|
161 |
+
}
|
162 |
+
}
|
163 |
+
return false;
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* extends the get_permalink of WordPress since at the beginning we had a lot of problems with people who didn't have pretty urls activated etc..
|
168 |
+
* @param int $pageid
|
169 |
+
* @param array $params pass an array of parameters to the url
|
170 |
+
* @param boolean $simple leading to the home not sure in which case we need that again
|
171 |
+
* @return string
|
172 |
+
*/
|
173 |
+
function get_permalink($pageid,$params=array(),$simple=false){
|
174 |
+
$post = get_post($pageid);
|
175 |
+
|
176 |
+
$url=get_permalink($post);
|
177 |
+
|
178 |
+
if(!$url){
|
179 |
+
//we need to recreate the subscription page
|
180 |
+
$values=array();
|
181 |
+
$helperInstall=WYSIJA::get('install','helper');
|
182 |
+
$helperInstall->createPage($values);
|
183 |
+
|
184 |
+
$modelConf=WYSIJA::get('config','model');
|
185 |
+
$modelConf->save($values);
|
186 |
+
$post = get_post($values['confirm_email_link']);
|
187 |
+
$url=get_permalink($post);
|
188 |
+
}
|
189 |
+
|
190 |
+
$paramsquery=parse_url($url);
|
191 |
+
|
192 |
+
if($params!==false) $params[$post->post_type]=$post->post_name;
|
193 |
+
//make a simple url leading to the home
|
194 |
+
if($simple){
|
195 |
+
$url=site_url();
|
196 |
+
// make sure we have a trailing slash at the end
|
197 |
+
if($url{strlen($url) - 1} !== '/') $url .= '/';
|
198 |
+
}
|
199 |
+
|
200 |
+
if(isset($paramsquery['query'])){
|
201 |
+
$myparams=explode('&',$paramsquery['query']);
|
202 |
+
//get the param from the url obtain in permalink and transfer it to our url
|
203 |
+
foreach($myparams as $paramvalu){
|
204 |
+
$splitkeyval=explode('=',$paramvalu);
|
205 |
+
$params[$splitkeyval[0]]=$splitkeyval[1];
|
206 |
+
}
|
207 |
+
}
|
208 |
+
|
209 |
+
// make sure we include the port if it's specified
|
210 |
+
if(isset($paramsquery['port']) && strlen(trim($paramsquery['port'])) > 0) {
|
211 |
+
$port = ':'.(int)$paramsquery['port'];
|
212 |
+
} else {
|
213 |
+
$port = '';
|
214 |
+
}
|
215 |
+
|
216 |
+
// build url
|
217 |
+
$url = sprintf('%s://%s%s%s', $paramsquery['scheme'], $paramsquery['host'], $port, $paramsquery['path']);
|
218 |
+
|
219 |
+
if($params) {
|
220 |
+
if(strpos($url, '?') !== false) $charStart='&';
|
221 |
+
else $charStart='?';
|
222 |
+
$url.=$charStart;
|
223 |
+
$paramsinline=array();
|
224 |
+
foreach($params as $k => $v){
|
225 |
+
if(is_array($v)) $v = http_build_query(array($k => $v));
|
226 |
+
$paramsinline[]=$k.'='.$v;
|
227 |
+
}
|
228 |
+
$url.=implode('&',$paramsinline);
|
229 |
+
}
|
230 |
+
|
231 |
+
// Transform relative URLs in Absolute URLs (Protect from external URL transforming plugins)
|
232 |
+
$parsed_url = parse_url($url);
|
233 |
+
if (empty($parsed_url['scheme'])) {
|
234 |
+
$url = get_bloginfo('url') . $url;
|
235 |
+
}
|
236 |
+
|
237 |
+
return $url;
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* return a list of post types
|
242 |
+
* @return mixed
|
243 |
+
*/
|
244 |
+
function get_post_types($return_type = 'objects') {
|
245 |
+
$args=array(
|
246 |
+
'public' => true,
|
247 |
+
'_builtin' => false,
|
248 |
+
'show_in_menu'=>true,
|
249 |
+
'show_ui'=>true,
|
250 |
+
);
|
251 |
+
return get_post_types($args, $return_type);
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* return a list of post types
|
256 |
+
* @return mixed
|
257 |
+
*/
|
258 |
+
function get_post_statuses(){
|
259 |
+
return array_merge(get_post_statuses(), array('future'=>__('Scheduled',WYSIJA)));
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* get a multidimensionnal array that returns the categories per CPT
|
264 |
+
*/
|
265 |
+
function get_categories($custom_post_type = null) {
|
266 |
+
if($custom_post_type === null) {
|
267 |
+
$post_types = array_merge(array('post', 'page'), array_keys($this->get_post_types('names')));
|
268 |
+
} else {
|
269 |
+
$post_types = array($post_type);
|
270 |
+
}
|
271 |
+
|
272 |
+
$cpt_categories = array();
|
273 |
+
$cpt_taxonomies = array();
|
274 |
+
|
275 |
+
foreach($post_types as $post_type) {
|
276 |
+
// get taxonomies for each post type
|
277 |
+
if($post_type === 'post') {
|
278 |
+
$cpt_taxonomies = array('category');
|
279 |
+
} else {
|
280 |
+
$cpt_taxonomies = get_object_taxonomies($post_type);
|
281 |
+
}
|
282 |
+
|
283 |
+
if(!empty($cpt_taxonomies)) {
|
284 |
+
foreach($cpt_taxonomies as $taxonomy) {
|
285 |
+
|
286 |
+
$post_type_categories = array();
|
287 |
+
$args = array(
|
288 |
+
'orderby' => 'name',
|
289 |
+
'show_count' => 0,
|
290 |
+
'pad_counts' => 0,
|
291 |
+
'hierarchical' => 1,
|
292 |
+
'taxonomy' => $taxonomy,
|
293 |
+
'title_li' => '',
|
294 |
+
'hide_empty' => 0
|
295 |
+
);
|
296 |
+
|
297 |
+
$post_type_categories = get_categories($args);
|
298 |
+
|
299 |
+
if(!empty($post_type_categories)) {
|
300 |
+
foreach($post_type_categories as $post_type_category) {
|
301 |
+
$cpt_categories[$post_type][$post_type_category->cat_ID] = array('id' => $post_type_category->cat_ID, 'name' => $post_type_category->name);
|
302 |
+
}
|
303 |
+
}
|
304 |
+
}
|
305 |
+
$cpt_categories[$post_type] = array_values($cpt_categories[$post_type]);
|
306 |
+
}
|
307 |
+
}
|
308 |
+
|
309 |
+
if($custom_post_type === null) {
|
310 |
+
return $cpt_categories;
|
311 |
+
} else {
|
312 |
+
return $cpt_categories[$post_type];
|
313 |
+
}
|
314 |
+
}
|
315 |
+
|
316 |
+
function get_post_category_ids($post = null) {
|
317 |
+
|
318 |
+
$cpt_categories = array();
|
319 |
+
$cpt_taxonomies = array();
|
320 |
+
|
321 |
+
// get taxonomies for each post type
|
322 |
+
$post_type = 'post';
|
323 |
+
$cpt_taxonomies = get_object_taxonomies($post->post_type);
|
324 |
+
|
325 |
+
if(!empty($cpt_taxonomies)) {
|
326 |
+
foreach($cpt_taxonomies as $taxonomy) {
|
327 |
+
$post_type_categories = wp_get_post_terms($post->ID, $taxonomy);
|
328 |
+
|
329 |
+
if(!empty($post_type_categories)) {
|
330 |
+
foreach($post_type_categories as $post_type_category) {
|
331 |
+
$cpt_categories[] = $post_type_category->term_id;
|
332 |
+
}
|
333 |
+
}
|
334 |
+
}
|
335 |
+
$cpt_categories = array_unique($cpt_categories);
|
336 |
+
}
|
337 |
+
|
338 |
+
return $cpt_categories;
|
339 |
+
}
|
340 |
}
|
img/controls/image-placeholder.png
DELETED
Binary file
|
index.php
CHANGED
@@ -3,8 +3,8 @@
|
|
3 |
Plugin Name: MailPoet Newsletters
|
4 |
Plugin URI: http://www.mailpoet.com/
|
5 |
Description: Create and send newsletters. Import and manage your lists. Add subscription forms in widgets, articles and pages. MailPoet (formerly Wysija) is a freemium plugin updated regularly with new features.
|
6 |
-
Version: 2.6.
|
7 |
-
Author:
|
8 |
Author URI: http://www.mailpoet.com/
|
9 |
License: GPLv2 or later
|
10 |
Text Domain: wysija-newsletters
|
@@ -28,4 +28,4 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
28 |
*/
|
29 |
/*require vital parts*/
|
30 |
|
31 |
-
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'core'.DIRECTORY_SEPARATOR.'base.php');
|
3 |
Plugin Name: MailPoet Newsletters
|
4 |
Plugin URI: http://www.mailpoet.com/
|
5 |
Description: Create and send newsletters. Import and manage your lists. Add subscription forms in widgets, articles and pages. MailPoet (formerly Wysija) is a freemium plugin updated regularly with new features.
|
6 |
+
Version: 2.6.1
|
7 |
+
Author: Wysija
|
8 |
Author URI: http://www.mailpoet.com/
|
9 |
License: GPLv2 or later
|
10 |
Text Domain: wysija-newsletters
|
28 |
*/
|
29 |
/*require vital parts*/
|
30 |
|
31 |
+
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'core'.DIRECTORY_SEPARATOR.'base.php');
|
js/admin-campaigns-articles.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var query_offset=0,wysappend=0,totalReached=!1,searchRunning=!1,slider=null,colorpicker=null;jQuery(function(e){function t(){e(".submit-box").addClass("counting");var t=parseInt(e(".search_results .checkbox:checked").length,10);0===t?a():c(t+" "+wysijatrans.post_selected)}function a(){e(".submit-box").removeClass("counting"),r()}function i(){e(".post_category").attr("disabled","disabled").
|
1 |
+
var query_offset=0,wysappend=0,totalReached=!1,searchRunning=!1,slider=null,colorpicker=null;jQuery(function(e){function t(){e(".submit-box").addClass("counting");var t=parseInt(e(".search_results .checkbox:checked").length,10);0===t?a():c(t+" "+wysijatrans.post_selected)}function a(){e(".submit-box").removeClass("counting"),r()}function i(){s(),e(".post_category").hide(),e(".post_category").attr("disabled","disabled"),e("#post_category_"+e("#post_type").val()).fadeIn();var t="#post_category_"+e("#post_type").val();e(t).show(),e(t).removeAttr("disabled")}function s(){return query_offset=0,wysappend=0,l(),!1}function n(){if(null===slider){var t=32,a=564,i=Math.min(Math.max(t,parseInt(e("#slider_info span").html())),a);slider=new Control.Slider("slider_handle","image_width_slider",{range:$R(t,a),slideValue:i,axis:"horizontal",onSlide:function(t){var a=parseInt(t,10);e("#slider_info").find("span").html(a),e("#image_width").val(a)},onChange:function(t){var a=parseInt(t,10);e("#slider_info").find("span").html(a),e("#image_width").val(a)}}),slider.setValue(i)}}function l(){var t="";wysappend||e("#results").html(t),wysijaAJAX.task="get_articles",wysijaAJAX.data=e("#articles-form").serializeArray(),wysijaAJAX.query_offset=query_offset,o(wysijatrans.loading_results),wysijaAJAX._wpnonce=e("#wysijax").val(),jQuery.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:f,error:m,dataType:"json"})}function o(t){a(),e(".submit-box").addClass("loading"),c(t)}function c(t){void 0!==t&&e("#loading-message").html(t)}function r(){e("#loading-message").html("")}function d(){e(".submit-box").removeClass("loading"),r(),t()}function u(){e("#title_position_block")["title"===e('input[name="post_content"]:checked').val()?"hide":"show"](),e("#title_tag_list")["title"===e('input[name="post_content"]:checked').val()?"show":"hide"](),e("#advanced:visible").length>0&&(e("#title_tag_list:hidden").length>0&&"list"===e('input[name="title_tag"]:checked').val()&&e('input[name="title_tag"][value="h2"]').attr("checked","checked"),"list"===e('input[name="title_tag"]:checked').val()?h(["image","author","category","readmore","divider","bgcolor"]):p(["image","author","category","readmore","divider","bgcolor"]))}function h(t){e.each(t,function(t,a){e("#"+a+"-block").hide()})}function p(t){e.each(t,function(t,a){e("#"+a+"-block").show()})}function _(){null===colorpicker&&(colorpicker=!0,e("input.color").modcoder_excolor({hue_bar:1,border_color:"#969696",anim_speed:"fast",round_corners:!1,shadow_size:2,shadow_color:"#f0f0f0",background_color:"#ececec",backlight:!1,label_color:"#333333",effect:"fade",show_input:!1,z_index:2e4,callback_on_open:function(){e("html, body").animate({scrollTop:e("#modcoder_colorpicker_wrapper:visible").offset().top},200)}}))}function g(){e("#image_block")[e('input[name="title_tag"][value="list"]:checked').length>0?"hide":"show"]()}function w(){var t=e('input[name="image_alignment"]:checked').val(),a=!0,i=32,s=325;"center"===t?s=564:"none"===t&&(a=!1),a===!0?(e("#image_width_block").show(),n(),slider.range=$R(i,s),slider.setValue(slider.value)):e("#image_width_block").hide()}function f(t){var a="",i=null;t.result.result?(a='<ul class="search_results">',e.each(t.result.posts,function(e,t){i={src:null,alt:"",title:""},null!==t.post_image&&(i.src=t.post_image.src,i.alt=t.post_image.alt,i.title=t.post_title);var s=query_offset+e;a+='<li id="post-'+s+'" class="clearfix">',a+='<div class="checkbox_container">',a+='<input id="post-checkbox-'+s+'" data-post-id="'+s+'" type="checkbox" class="checkbox" value="'+t.ID+'" name="post_selection" />',a+="</div>",null!==i.src?(a+='<div class="thumbnail"><img width="60" title="'+i.title+'" src="'+i.src+'" alt="'+i.alt+'" /></div>',a+='<label class="with_thumbnail" for="post-checkbox-'+s+'">'+t.post_title+"</label>"):a+='<label for="post-checkbox-'+s+'">'+t.post_title+"</label>",a+='<span class="cpt-type">'+t.post_type+" - <small>"+t.post_status+"</small></span>",a+="</li>"}),a+="</ul>"):a=t.result.append?"":'<p class="message"><strong>'+t.result.msg+"</strong></p>",t.result.append?""!==a&&e("#results").append("<hr />"+a):e("#results").html(a),wysappend=0,searchRunning=!1,totalReached=parseInt(t.result.total)===e("ul.search_results li").length?!0:!1,d()}function m(){searchRunning=!1,wysappend=0}function y(){0!==e("#advanced:hidden").length&&searchRunning!==!0&&(searchRunning=!0,query_offset+=10,wysappend=1,l())}i(),e("#toggle-advanced").toggle(function(){return e(this).html(wysijatrans.hide_advanced),e("#advanced").show(),e("#basic").hide(),n(),u(),w(),g(),_(),e(this).blur(),!1},function(){return e(this).html(wysijatrans.show_advanced),e("#basic").show(),e("#advanced").hide(),e(this).blur(),!1}),e("#back-selection").click(function(){return e("#toggle-advanced").trigger("click"),!1}),e("#insert-selection").click(function(){var t=[],a=e('#results input[name="post_selection"]:checked'),i=[],s=["readmore","author_label","category_label"];return 0===a.length?!1:(e.each(a,function(a,i){t.push(e(i).val())}),e("#articles-form").serializeArray().each(function(e){s.include(e.name)&&(e.value=window.parent.Wysija.encodeHtmlValue(e.value)),i.push(e)}),wysijaAJAX.task="insert_articles",wysijaAJAX.post_ids=t.join(","),wysijaAJAX.data=i,wysijaAJAX._wpnonce=e("#wysijax").val(),wysijaAJAX.divider={src:window.parent.$$('.wysija_item[wysija_type="divider"]')[0].readAttribute("wysija_src"),width:window.parent.$$('.wysija_item[wysija_type="divider"]')[0].readAttribute("wysija_width"),height:window.parent.$$('.wysija_item[wysija_type="divider"]')[0].readAttribute("wysija_height")},o(wysijatrans.inserting_selection),jQuery.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(e){window.parent.WysijaPopup.success(e.result.posts),d()},error:m,dataType:"json"}),!1)}),e(document).on("click",".search_results .checkbox",function(){e(this).is(":checked")===!0?e("#post-"+e(this).data("post-id")).addClass("selected"):e("#post-"+e(this).data("post-id")).removeClass("selected"),t()}),e("#post_type").change(i),e(".post_category").change(function(){s()}),e("#post_status").change(function(){s()}),e(document).on("click","#search-submit",function(){return l(),!1}),e('input[name="image_alignment"]').click(function(){w()}),e('input[name="post_content"]').click(function(){u(),g(),w()}),e('input[name="title_tag"]').click(function(){u(),g(),w()}),e(function(){l()}),e(window).scroll(function(){totalReached===!1&&e("#results li").length>=10&&!wysappend&&e(window).scrollTop()===e(document).height()-e(window).height()&&y()})});
|
js/admin-campaigns-autopost.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var colorpicker=null;jQuery(function(e){function t(){e("#title_position_block")["title"===e('input[name="post_content"]:checked').val()?"hide":"show"](),e("#title_tag_list")["title"===e('input[name="post_content"]:checked').val()?"show":"hide"](),e("#advanced:visible").length>0&&(e("#title_tag_list:hidden").length>0&&"list"===e('input[name="title_tag"]:checked').val()&&e('input[name="title_tag"][value="h2"]').attr("checked","checked"),"list"===e('input[name="title_tag"]:checked').val()?
|
1 |
+
var colorpicker=null;jQuery(function(e){function t(){e("#title_position_block")["title"===e('input[name="post_content"]:checked').val()?"hide":"show"](),e("#title_tag_list")["title"===e('input[name="post_content"]:checked').val()?"show":"hide"](),e("#advanced:visible").length>0&&(e("#title_tag_list:hidden").length>0&&"list"===e('input[name="title_tag"]:checked').val()&&e('input[name="title_tag"][value="h2"]').attr("checked","checked"),"list"===e('input[name="title_tag"]:checked').val()?i(["image","author","category","readmore","divider","bgcolor"]):a(["image","author","category","readmore","divider","bgcolor"]))}function i(t){e.each(t,function(t,i){e("#"+i+"-block").hide()})}function a(t){e.each(t,function(t,i){e("#"+i+"-block").show()})}function n(){e("#image_block")[e('input[name="title_tag"][value="list"]:checked').length>0?"hide":"show"]()}function o(t){e(".category_select").hide(),t===!0&&e(".category_ids").val("").trigger("change");var i=e("#post_type").val();e('.category_select[data-post-type="'+i+'"]').length>0?(e('.category_select[data-post-type="'+i+'"]').show(),e("#categories_filters").show()):e("#categories_filters").hide()}function c(){var t=e('input[name="image_alignment"]:checked').val(),i=!0,a=32,n=325;"center"===t?n=564:"none"===t&&(i=!1),i===!0?(e("#image_width_block").show(),l(),slider.range=$R(a,n),slider.setValue(slider.value)):e("#image_width_block").hide()}function l(){var t=32,i=564,a=Math.min(Math.max(t,parseInt(e("#slider_info span").html())),i);slider=new Control.Slider("slider_handle","image_width_slider",{range:$R(t,i),slideValue:a,axis:"horizontal",onSlide:function(t){var i=parseInt(t,10);e("#slider_info").find("span").html(i),e("#image_width").val(i)},onChange:function(t){var i=parseInt(t,10);e("#slider_info").find("span").html(i),e("#image_width").val(i)}}),slider.setValue(a)}function r(){null===colorpicker&&(colorpicker=!0,e("input.color").modcoder_excolor({hue_bar:1,border_color:"#969696",anim_speed:"fast",round_corners:!1,shadow_size:2,shadow_color:"#f0f0f0",background_color:"#ececec",backlight:!1,label_color:"#333333",effect:"fade",show_input:!1,z_index:2e4,callback_on_open:function(){e("html, body").animate({scrollTop:e("#modcoder_colorpicker_wrapper:visible").offset().top},200)}}))}e("#toggle-advanced").toggle(function(){return e(this).html(wysijatrans.hide_advanced),e("#advanced").show(),l(),t(),c(),n(),r(),e(this).blur(),window.parent.WysijaPopup.setDimensions(),!1},function(){return e(this).html(wysijatrans.show_advanced),e("#advanced").hide(),e(this).blur(),window.parent.WysijaPopup.setDimensions(),!1}),e("#autopost-submit").click(function(){var t=[],i=["readmore","author_label","category_label"];return e("#autopost-form").serializeArray().each(function(e){i.include(e.name)&&(e.value=window.parent.Wysija.encodeHtmlValue(e.value)),t.push(e)}),wysijaAJAX.task="generate_auto_post",wysijaAJAX.wysijaData=t,jQuery.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(e){void 0!==e.result&&""!==e.result?window.parent.WysijaPopup.success(e.result):window.parent.WysijaPopup.cancel()}}),!1}),e('input[name="image_alignment"]').click(function(){c()}),e('input[name="post_content"]').click(function(){t(),n(),c()}),e('input[name="title_tag"]').click(function(){t(),n(),c()}),e("#post_type").change(function(){return o(!0),!1}),e(function(){e(".category_ids").select2({width:"400px"}),l(),t(),c(),n(),o()})});
|
js/admin-campaigns-editDetails.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(e){function t(){wysijaAJAX.popTitle=wysijatrans.previewemail,wysijaAJAX.dataType="json",wysijaAJAX.task="send_preview",jQuery("#campaignstep3").length>0&&(wysijaAJAX.data=jQuery("#campaignstep3").serializeArray(),wysijaAJAX.id=jQuery("#email_id").val()),wysijaAJAX.receiver=jQuery("#preview-receiver").val(),jQuery.WYSIJA_SEND()}function
|
1 |
+
jQuery(function(e){function t(){wysijaAJAX.popTitle=wysijatrans.previewemail,wysijaAJAX.dataType="json",wysijaAJAX.task="send_preview",jQuery("#campaignstep3").length>0&&(wysijaAJAX.data=jQuery("#campaignstep3").serializeArray(),wysijaAJAX.id=jQuery("#email_id").val()),wysijaAJAX.receiver=jQuery("#preview-receiver").val(),jQuery.WYSIJA_SEND()}function a(){return"function"==typeof saveWYSIJA?saveWYSIJA(function(){t()}):t(),!1}function i(){var t={};return e(".checkbox.checklists").each(function(){e(this).attr("checked")&&(t[e(this).attr("id")]={total:parseInt(e("#"+e(this).attr("id")+"count").val()),title:e(this).attr("alt")})}),t}function s(){var t=i(),a=0,s="";for(var r in t)a+=parseInt(t[r].total),s+=t[r].title+", ";if(s=s.substr(0,s.length-2),void 0!=wysijatrans.alertsend&&!e("#scheduleit").attr("checked")){var n=wysijatrans.alertsend;return n=n.replace("[#]",a),n=n.replace("[#nms]",s),confirm(n)?!0:!1}return void 0!=wysijatrans.ignoreprevious&&e("#ignore_subscribers").attr("checked")?confirm(wysijatrans.ignoreprevious)?!0:!1:!0}function r(){return e("#wysija-send-spamtest").hasClass("disabled")?!1:(WysijaPopup.showLoading(),WysijaPopup.showOverlay(),saveWYSIJA(function(){n()}),void 0)}function n(){wysijaAJAX.popTitle=wysijatrans.previewemail,wysijaAJAX.dataType="json",wysijaAJAX.task="send_spamtest",e.ajax({type:"POST",url:wysijaAJAX.ajaxurl,data:wysijaAJAX,success:function(t){if(WysijaPopup.hideLoading(),t.result.result){e("#wysija-spam-results").attr("href",t.result.urlredirect).fadeIn("slow");var a=parseInt(e("#counttriesleft").html())-1;e("#counttriesleft").html(a),0>=a&&e("#wysija-send-spamtest").addClass("disabled"),WysijaPopup.hideOverlay()}else t.result.notriesleft&&alert(t.result.notriesleft),WysijaPopup.hideOverlay()},error:function(e){alert("Request error not JSON:"+e.responseText),delete wysijaAJAXcallback.onSuccess},dataType:wysijaAJAX.dataType})}function o(){var t=e("#from_email");t.qtip({content:wysijatrans.emailCheck.text,position:{my:"top center",at:"bottom center"},target:t,show:{ready:!0,event:"keyup"},hide:"keyup",events:{show:function(e,a){var i=t.val().toLowerCase().split("@")[1];"true"===wysijatrans.emailCheck.isGmail&&e.preventDefault(),"gmail.com"===i&&a.elements.content.html(wysijatrans.emailCheck.gmailText),i===wysijatrans.emailCheck.domain&&e.preventDefault()},hide:function(a){e("#from_email:visible").length>0&&t.val().toLowerCase().split("@")[1]!==wysijatrans.emailCheck.domain&&a.preventDefault()}}})}e(".action-send-spam-test").click(function(){return tb_show(wysijatrans.processqueue,e(this).attr("href")+"&KeepThis=true&TB_iframe=true&height=618&width=1000",null),tb_showIframe(),!1}),e("#wj-send-preview").click(a),e("#submit-send").click(s),e(document).ready(function(){function t(t){e("#scheduleit").attr("checked")?(e(".schedule-row").show(),e("#submit-send").val(wysijatrans.schedule)):(e(".schedule-row").hide(),e("#submit-send").val(t))}if("function"!=typeof saveWYSIJA){e("#datepicker-day").datepicker({minDate:0,showOn:"focus",dateFormat:"yy-mm-dd"});var a=e("#submit-send").val();t(a),e("#scheduleit").change(function(){t(a)})}}),e("#wysija-send-spamtest").click(r),e("#link-back-step2").click(function(){return e("#hid-redir").attr("value","savelastback"),e("#campaignstep3").submit(),!1}),e("#from_email").length>0&&("true"!==wysijatrans.emailCheck.isGmail?(o(),e("#from_email").qtip("show")):e("#from_email").qtip("hide")),e("#from_email").on("keyup",function(){"gmail.com"===e(this).val().toLowerCase().split("@")[1]?e(this).qtip("option","content.text",wysijatrans.emailCheck.gmailText):e(this).qtip("option","content.text",wysijatrans.emailCheck.text)})});
|
js/admin-config-settings.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(e){function i(){e("#manage_subscriptions").attr("checked")?e(".manage_subscriptions").fadeIn():e(".manage_subscriptions").fadeOut()}function n(i){null===i?e.each(e(".page_select"),function(){e("#"+e(this).attr("id")+"-links-"+e(this).val()).fadeIn()}):(id_section="#"+e(i).attr("id")+"-links",e(id_section+" span").hide(),e(id_section+"-"+e(i).val()).fadeIn())}function t(){switch(e("#restapipossible").hide(),e("#smtp-host").val()){case"smtp.gmail.com":""==_&&(e("#smtp-port").val("465"),e("#smtp-secure").val("ssl"),e("#smtp-login").val("your_username@gmail.com"));break;case"smtp.sendgrid.net":e("#restapipossible").show();break;case"":""==_&&(e("#smtp-port").val("25"),e("#smtp-secure").val("0"),e("#smtp-login").val(""))}""==_&&e("#smtp-secure").change()}function a(){"smtp"==e('input[name="wysija[config][sending_method]"]:checked').val()&&("none"!=e("#restapipossible").css("display")&&e("#smtp-rest").attr("checked")?e(".choice-no-restapi").hide():e(".choice-no-restapi").show())}function s(){1===parseInt(e('input[name="wysija[config][confirm_dbleoptin]"]:checked').attr("value"))?e(".confirmemail").fadeIn():e(".confirmemail").fadeOut()}function o(){var i=e(".mailpoet-frequency_warning"),n=e("#sending-emails-each"),t=["one_min","two_min","five_min","ten_min"];-1!==e.inArray(n.val(),t)?i.removeClass("hidden"):i.addClass("hidden")}function c(){return"gmail"==e('input[name="wysija[config][sending_method]"]:checked').val()}function r(){c()?e('select[name="wysija[config][sending_emails_each]"] option[value="hourly"]').length>0&&(e("#sending-emails-number").val("20"),e('select[name="wysija[config][sending_emails_each]"]').val("hourly"),e("#sending-emails-number").attr("readonly","readonly"),e('select[name="wysija[config][sending_emails_each]"]').attr("disabled","disabled")):(e('select[name="wysija[config][sending_emails_each]"]').removeAttr("disabled"),e("#sending-emails-number").removeAttr("readonly"))}function d(){return wysijaAJAX.task="send_test_mail",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.testemail,wysijaAJAX.dataType="json",e.WYSIJA_SEND(),!1}function l(){return wysijaAJAX.task="bounce_connect",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.bounceconnect,wysijaAJAX.dataType="json",wysijaAJAXcallback.onSuccess=function(i){var n="";return i.result.result&&(n='<a class="bounce-submit button-secondary" href2="admin.php?page=wysija_campaigns&action=test_bounce">'+wysijatrans.processbounce+"</a>"),displaychange?e(".allmsgs.ui-dialog-content.ui-widget-content").append(n):e("#bounce-connector").after(n),!0},e.WYSIJA_SEND(),!1}function m(){return wysijaAJAX.task="bounce_process",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.processbounceT,wysijaAJAX.dataType="html",e(".allmsgs").dialog(),e.WYSIJA_SEND(),!1}function h(){"undefined"!=typeof this?e.each(e(".activateInput"),function(){u(this)}):u(this)}function u(i){e(i).attr("checked")?e("#"+e(i).attr("id")+"_linkname").fadeIn():e("#"+e(i).attr("id")+"_linkname").fadeOut()}function f(){subscribersCountList=[],e(".subscribers-count-list").each(function(){e(this).is(":checked")&&subscribersCountList.push(e(this).val())}),shortCode="[",shortCode+="wysija_subscribers_count",subscribersCountList.length>0&&(shortCode+=' list_id="'+subscribersCountList.join()+'" '),shortCode+="]",e(".subscribers-count-shortcode").val(shortCode)}function g(){switch(e("#ms-restapipossible").hide(),e("#ms-smtp-host").val()){case"smtp.gmail.com":""==v&&(e("#ms-smtp-port").val("465"),e("#ms-smtp-secure").val("ssl"),e("#ms-smtp-login").val("your_username@gmail.com"));break;case"smtp.sendgrid.net":e("#ms-restapipossible").show();break;case"":""==v&&(e("#ms-smtp-port").val("25"),e("#ms-smtp-secure").val("0"),e("#ms-smtp-login").val(""))}""==v&&e("#ms-smtp-secure").change()}function p(){"smtp"==e('input[name="wysija[config][ms_sending_method]"]:checked').val()&&("none"!=e("#ms-restapipossible").css("display")&&e("#ms-smtp-rest").attr("checked")?e(".ms-choice-no-restapi").hide():e(".ms-choice-no-restapi").show())}function y(){-1!==e.inArray(e("#ms-sending-emails-each").val(),["one_min","two_min","five_min","ten_min"])?e(".ms-choice-under15").show():e(".ms-choice-under15").hide()}function w(){"one-for-all"==e('input[name="wysija[config][ms_sending_config]"]:checked').val()?e(".choice-one-for-all").show():e(".choice-one-for-all").hide()}function b(){return wysijaAJAX.task="send_test_mail_ms",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.testemail,wysijaAJAX.dataType="json",e.WYSIJA_SEND(),!1}var _=e("#smtp-login").val();e(".hidechoice").hide(),e(".choice-sending-method-"+e('input[name="wysija[config][sending_method]"]:checked').val()).show(),e('input[name="wysija[config][sending_method]"]').change(function(){e(".hidechoice").hide(),e(".choice-sending-method-"+this.value).show(),r()}),e("#sending-emails-each").change(function(){o()}),e("#linksendingmethod").click(function(){e("#tabs").tabs("select",e(this).attr("href"))}),e("#mainmenu li a").click(function(){e("#redirecttab").val(e(this).attr("href"))}),e('input[name="wysija[config][confirm_dbleoptin]"]').change(s),e("#confirm_dbleoptin-1").click(function(){return confirm(wysijatrans.doubleoptinon)}),e("#confirm_dbleoptin-0").click(function(){return confirm(wysijatrans.doubleoptinoff)}),e('input[name="wysija[config][sending_emails_site_method]"]').change(function(){"sendmail"==e('input[name="wysija[config][sending_emails_site_method]"]:checked').val()?e("#p-sending-emails-site-method-sendmail-path").show():e("#p-sending-emails-site-method-sendmail-path").hide()}),e('input[name="wysija[config][sending_emails_site_method]"]').change(),e(".page_select").change(function(){n(this)}),e("#manage_subscriptions").change(function(){i()}),e("#smtp-host").keyup(t),e("#smtp-rest").change(a),e("#button-regenerate-dkim").click(function(){return e("#sending-emails-site-method-phpmail").attr("checked","checked"),e("#dkim_regenerate").val("regenerate"),e("#wysija-settings").submit(),!1}),e("#send-test-mail-phpmail").click(function(){return e("#sending-emails-site-method-phpmail").attr("checked","checked"),d(),!1}),e("#send-test-mail-sendmail").click(function(){return e("#sending-emails-site-method-sendmail").attr("checked","checked"),d(),!1}),e("#send-test-mail-wpmail").click(function(){return e("#sending-emails-site-method-wpmail").attr("checked","checked"),d(),!1}),e("#send-test-mail-smtp").click(function(){return d(),!1}),e("#bounce-connector").click(l),e(document).on("click",".bounce-submit",function(){return m(),e(".allmsgs").dialog("close"),tb_show(wysijatrans.processbounceT,e(this).attr("href2")+"&KeepThis=true&TB_iframe=true&height=400&width=600",null),tb_showIframe(),!1}),e(".forwardto").change(function(){e(this).attr("checked")?e("#"+e(this).attr("id")+"_input").show():e("#"+e(this).attr("id")+"_input").hide()}),e.each(e(".hideifnovalue"),function(){""==e(this).find("input").val()&&e(this).hide()}),e("#wysija-settings").submit(function(){var i=!1;return e(".bounce-forward-email").each(function(){var n=trim(e(this).val());""!==n&&n==e("#bounce_email").val()&&(e('#wysija-tabs a[href="#bounce"]').trigger("click"),e('#wysija-innertabs a[href="#actions"]').trigger("click"),e(this).css("border","1px solid #CC0000"),e("#bounce-msg-error").addClass("error"),e("#bounce-msg-error").html(wysijatrans.errorbounceforward),i=!0)}),i?!1:(e('select[name="wysija[config][sending_emails_each]"]').removeAttr("disabled"),void 0)}),e("#bounce-process-auto").attr("checked")?e("#bounce-frequency").show():e("#bounce-frequency").hide(),e("#bounce-process-auto").change(function(){e(this).attr("checked")?e("#bounce-frequency").show():e("#bounce-frequency").hide()}),e(".activateInput").change(h),e(document).on("click","#wysija-innertabs .nav-tab",function(i,n){var t,a=e(".wysija-innerpanel"),s=e("#wysija-innertabs").children(".nav-tab"),o=e(this),c=o.attr("href").replace("#",""),r={};return"undefined"==typeof n&&(n=!0),a.each(function(i,n){var t=e(n);r[t.attr("id")]=t}),t=r[c],s.removeClass("nav-tab-active"),o.addClass("nav-tab-active"),a.not(".hidden").addClass("hidden"),t.removeClass("hidden"),n&&(window.location.hash="inner-tab-"+c),t.trigger("shown.innertab.mailpoet"),!1}),e(document).on("click","#wysija-tabs .nav-tab",function(i,n){var t,a=e(".wysija-panel"),s=e("#wysija-tabs").children(".nav-tab"),o=e(this),c=o.attr("href").replace("#",""),r={};return"undefined"==typeof n&&(n=!0),a.each(function(i,n){var t=e(n);r[t.attr("id")]=t}),t=r[c],s.removeClass("nav-tab-active"),o.addClass("nav-tab-active"),a.not(".hidden").addClass("hidden"),t.removeClass("hidden"),n&&(window.location.hash="tab-"+c),t.trigger("shown.tab.mailpoet"),!1}),e(document).on("click","#tip-send-with",function(i){e('.nav-tab[href="#sendingmethod"]').trigger("click"),i.preventDefault()}),e(window).load(function(){if(window.location.hash.length>0){var i=window.location.hash.replace("tab-","");e('#wysija-tabs .nav-tab[href="'+i+'"]').trigger("click")}else e("#wysija-tabs .nav-tab").first().trigger("click",!1);if(1===window.location.hash.indexOf("inner-tab")){var n=e('#wysija-innertabs .nav-tab[href="'+window.location.hash.replace("inner-tab-","")+'"]').trigger("click");e('#wysija-tabs .nav-tab[href="#'+n.parents(".wysija-panel").attr("id")+'"]').trigger("click",!1)}else e("#wysija-innertabs .nav-tab-active").trigger("click",!1)}),e(document).ready(function(){r(),o(),s(),h(),t(),a(),n(null),i(),e(".subscribers-count-list").change(f),e("#analytics-0").is(":checked")&&e("#advanced .industry").hide(),e("#analytics-1").change(function(){"1"==e(this).val()&&e("#advanced .industry").show()}),e("#analytics-0").change(function(){"0"==e(this).val()&&e("#advanced .industry").hide()}),e("#"+getURLParameter("scroll_to")).length>0&&(e("html,body").animate({scrollTop:e("#"+getURLParameter("scroll_to")).offset().top-e("#wpadminbar").height()},500),e("#"+getURLParameter("scroll_to")).css({"background-color":"#f8fcff","font-size":"16px","font-weight":"bold"}))}),e("#dkimpub, #domainrecord, .subscribers-count-shortcode").click(function(){this.select()});var v=e("#ms-smtp-login").val();e(".ms-hidechoice").hide(),e(".ms-choice-sending-method-"+e('input[name="wysija[config][ms_sending_method]"]:checked').val()).show(),e('input[name="wysija[config][ms_sending_method]"]').change(function(){e(".ms-hidechoice").hide(),e(".ms-choice-sending-method-"+this.value).show()}),e("#ms-sending-emails-each").change(function(){y()}),e('input[name="wysija[config][ms_sending_config]"]').change(function(){w()}),e('input[name="wysija[config][ms_sending_emails_site_method]"]').change(function(){"sendmail"==e('input[name="wysija[config][ms_sending_emails_site_method]"]:checked').val()?e("#ms_p-sending-emails-site-method-sendmail-path").show():e("#ms_p-sending-emails-site-method-sendmail-path").hide()}),e('input[name="wysija[config][ms_sending_emails_site_method]"]').change(),e("#ms-smtp-host").keyup(g),e("#ms-smtp-rest").change(p),e("#ms-send-test-mail-phpmail").click(function(){return e("#ms-sending-emails-site-method-phpmail").attr("checked","checked"),b(),!1}),e("#ms-send-test-mail-sendmail").click(function(){return e("#ms-sending-emails-site-method-sendmail").attr("checked","checked"),b(),!1}),e("#ms-send-test-mail-smtp").click(function(){return b(),!1}),e.each(e(".hideifnovalue"),function(){""===e(this).find("input").val()&&e(this).hide()}),e("table.capabilities_form .view_all").click(function(){e("table.capabilities_form tr.hidden").removeClass("hidden"),objTr=e(this).parents("tr")[0],e(objTr).remove()}),e(document).ready(function(){w(),y(),g(),p()})}),window.mailpoet="object"==typeof window.mailpoet?window.mailpoet:{$:{}},function(e,i){"use strict";var n=i.mailpoet,t=n.fn={};t.getSendingMethod=function(){return n.$.sending_method instanceof jQuery||(n.$.sending_method=e('input[name="wysija[config][sending_method]"]')),n.$.sending_method.filter(":checked").val()},t.isGoodFromAddress=function(e){var n=e.split("@")[1];return"undefined"==typeof n||""===n?!1:n.toLowerCase()!==i.location.host.toLowerCase()?!1:!0},t.isGmailAddress=function(e){var i=e.split("@")[1];return"undefined"==typeof i||""===i?!1:"gmail.com"!==i.toLowerCase()?!1:!0}}(jQuery,window),function(e,i){"use strict";var n=i.mailpoet;e(document).ready(function(){"object"==typeof e.fn.tooltip&&(n.$.from_email=e("#from_email"),n.$.from_email.tooltip({animation:!0,placement:"bottom",trigger:"manual",html:!0,title:function(){return n.$.from_email.data("message")}}).on({"verifyEmail.mailpoet":function(){if(n.fn.isGoodFromAddress(n.$.from_email.val()))return n.$.from_email.data("message","").tooltip("hide");if("gmail"===n.fn.getSendingMethod())return n.$.from_email.data("message","").tooltip("hide");var e="";return e=n.fn.isGmailAddress(n.$.from_email.val())?mpEmailCheck.gmailText:mpEmailCheck.text,n.$.from_email.is(":visible")?n.$.from_email.data("message",e).tooltip("show"):n.$.from_email.tooltip("hide")},keyup:function(){n.$.from_email.trigger("verifyEmail.mailpoet")}}).trigger("verifyEmail.mailpoet"),n.$.panels=e(".wysija-panel"),n.$.panels.filter("#basics").on({"shown.tab.mailpoet":function(){n.$.from_email.trigger("verifyEmail.mailpoet")}}))})}(jQuery,window),function(e,i){"use strict";var n=i.mailpoet;e(document).on({ready:function(){n.$.geeky=e(".mailpoet-geeky-toggle"),n.$.geeky.data("l18n",{hide:n.$.geeky.data("hide"),show:n.$.geeky.text()}),n.$.geeky_rows=e(".super-advanced"),n.$.geeky.on({click:function(i){i.preventDefault();var t=n.$.geeky.data("l18n");n.$.geeky.hasClass("is_toggled")?(n.$.geeky.removeClass("is_toggled").text(t.hide),n.$.geeky_rows.removeClass("hidden"),void 0!==i.originalEvent&&e.cookie("geeky_option",1)):(n.$.geeky.addClass("is_toggled").text(t.show),n.$.geeky_rows.addClass("hidden"),void 0!==i.originalEvent&&e.cookie("geeky_option",0))}}),1==e.cookie("geeky_option")?n.$.geeky.trigger("click"):n.$.geeky_rows.addClass("hidden")}})}(jQuery,window);
|
1 |
+
jQuery(function(e){function i(){e("#manage_subscriptions").attr("checked")?e(".manage_subscriptions").fadeIn():e(".manage_subscriptions").fadeOut()}function t(i){null===i?e.each(e(".page_select"),function(){e("#"+e(this).attr("id")+"-links-"+e(this).val()).fadeIn()}):(id_section="#"+e(i).attr("id")+"-links",e(id_section+" span").hide(),e(id_section+"-"+e(i).val()).fadeIn())}function n(){switch(e("#restapipossible").hide(),e("#smtp-host").val()){case"smtp.gmail.com":""==k&&(e("#smtp-port").val("465"),e("#smtp-secure").val("ssl"),e("#smtp-login").val("your_username@gmail.com"));break;case"smtp.sendgrid.net":e("#restapipossible").show();break;case"":""==k&&(e("#smtp-port").val("25"),e("#smtp-secure").val("0"),e("#smtp-login").val(""))}""==k&&e("#smtp-secure").change()}function s(){"smtp"==e('input[name="wysija[config][sending_method]"]:checked').val()&&("none"!=e("#restapipossible").css("display")&&e("#smtp-rest").attr("checked")?e(".choice-no-restapi").hide():e(".choice-no-restapi").show())}function a(){1===parseInt(e('input[name="wysija[config][confirm_dbleoptin]"]:checked').attr("value"))?e(".confirmemail").fadeIn():e(".confirmemail").fadeOut()}function o(){e(".choice-frequency").hide(),-1!==e.inArray(e("#sending-emails-each").val(),["one_min","two_min","five_min","ten_min"])?e(".choice-under15").show():-1!==e.inArray(e("#sending-emails-each").val(),["fifteen_min"])||e(".choice-above15").show()}function c(){return"gmail"==e('input[name="wysija[config][sending_method]"]:checked').val()}function r(){c()?e('select[name="wysija[config][sending_emails_each]"] option[value="hourly"]').length>0&&(e("#sending-emails-number").val("20"),e('select[name="wysija[config][sending_emails_each]"]').val("hourly"),e("#sending-emails-number").attr("readonly","readonly"),e('select[name="wysija[config][sending_emails_each]"]').attr("disabled","disabled")):(e('select[name="wysija[config][sending_emails_each]"]').removeAttr("disabled"),e("#sending-emails-number").removeAttr("readonly"))}function l(){return wysijaAJAX.task="send_test_mail",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.testemail,wysijaAJAX.dataType="json",e.WYSIJA_SEND(),!1}function m(){return wysijaAJAX.task="bounce_connect",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.bounceconnect,wysijaAJAX.dataType="json",wysijaAJAXcallback.onSuccess=function(i){var t="";return i.result.result&&(t='<a class="bounce-submit button-secondary" href2="admin.php?page=wysija_campaigns&action=test_bounce">'+wysijatrans.processbounce+"</a>"),displaychange?e(".allmsgs.ui-dialog-content.ui-widget-content").append(t):e("#bounce-connector").after(t),!0},e.WYSIJA_SEND(),!1}function d(){return wysijaAJAX.task="bounce_process",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.processbounceT,wysijaAJAX.dataType="html",e(".allmsgs").dialog(),e.WYSIJA_SEND(),!1}function h(){"undefined"!=typeof this?e.each(e(".activateInput"),function(){u(this)}):u(this)}function u(i){e(i).attr("checked")?e("#"+e(i).attr("id")+"_linkname").fadeIn():e("#"+e(i).attr("id")+"_linkname").fadeOut()}function p(){subscribersCountList=[],e(".subscribers-count-list").each(function(){e(this).is(":checked")&&subscribersCountList.push(e(this).val())}),shortCode="[",shortCode+="wysija_subscribers_count",subscribersCountList.length>0&&(shortCode+=' list_id="'+subscribersCountList.join()+'" '),shortCode+="]",e(".subscribers-count-shortcode").val(shortCode)}function g(){switch(e("#ms-restapipossible").hide(),e("#ms-smtp-host").val()){case"smtp.gmail.com":""==v&&(e("#ms-smtp-port").val("465"),e("#ms-smtp-secure").val("ssl"),e("#ms-smtp-login").val("your_username@gmail.com"));break;case"smtp.sendgrid.net":e("#ms-restapipossible").show();break;case"":""==v&&(e("#ms-smtp-port").val("25"),e("#ms-smtp-secure").val("0"),e("#ms-smtp-login").val(""))}""==v&&e("#ms-smtp-secure").change()}function f(){"smtp"==e('input[name="wysija[config][ms_sending_method]"]:checked').val()&&("none"!=e("#ms-restapipossible").css("display")&&e("#ms-smtp-rest").attr("checked")?e(".ms-choice-no-restapi").hide():e(".ms-choice-no-restapi").show())}function y(){-1!==e.inArray(e("#ms-sending-emails-each").val(),["one_min","two_min","five_min","ten_min"])?e(".ms-choice-under15").show():e(".ms-choice-under15").hide()}function w(){"one-for-all"==e('input[name="wysija[config][ms_sending_config]"]:checked').val()?e(".choice-one-for-all").show():e(".choice-one-for-all").hide()}function b(){var i=e("#from_email");e("#replyto_email"),i.qtip({content:mpEmailCheck.text,position:{my:"top center",at:"bottom center"},target:i,show:{ready:!0,event:"keyup"},hide:"keyup",events:{show:function(e,t){var n=i.val().toLowerCase().split("@")[1];("true"===mpEmailCheck.isGmail||c())&&e.preventDefault(),"gmail.com"===n&&t.elements.content.html(mpEmailCheck.gmailText),n===mpEmailCheck.domain&&e.preventDefault()},hide:function(t){e("#from_email:visible").length>0&&i.val().toLowerCase().split("@")[1]!==mpEmailCheck.domain&&t.preventDefault()}}})}function _(){return wysijaAJAX.task="send_test_mail_ms",wysijaAJAX.data=e("form").serializeArray(),wysijaAJAX.popTitle=wysijatrans.testemail,wysijaAJAX.dataType="json",e.WYSIJA_SEND(),!1}var k=e("#smtp-login").val();e(".hidechoice").hide(),e(".choice-sending-method-"+e('input[name="wysija[config][sending_method]"]:checked').val()).show(),e('input[name="wysija[config][sending_method]"]').change(function(){e(".hidechoice").hide(),e(".choice-sending-method-"+this.value).show(),r()}),e("#sending-emails-each").change(function(){o()}),e("#linksendingmethod").click(function(){e("#tabs").tabs("select",e(this).attr("href"))}),e("#mainmenu li a").click(function(){e("#redirecttab").val(e(this).attr("href"))}),e('input[name="wysija[config][confirm_dbleoptin]"]').change(a),e("#confirm_dbleoptin-1").click(function(){return confirm(wysijatrans.doubleoptinon)}),e("#confirm_dbleoptin-0").click(function(){return confirm(wysijatrans.doubleoptinoff)}),e('input[name="wysija[config][sending_emails_site_method]"]').change(function(){"sendmail"==e('input[name="wysija[config][sending_emails_site_method]"]:checked').val()?e("#p-sending-emails-site-method-sendmail-path").show():e("#p-sending-emails-site-method-sendmail-path").hide()}),e('input[name="wysija[config][sending_emails_site_method]"]').change(),e(".page_select").change(function(){t(this)}),e("#manage_subscriptions").change(function(){i()}),e("#smtp-host").keyup(n),e("#smtp-rest").change(s),e("#button-regenerate-dkim").click(function(){return e("#sending-emails-site-method-phpmail").attr("checked","checked"),e("#dkim_regenerate").val("regenerate"),e("#wysija-settings").submit(),!1}),e("#send-test-mail-phpmail").click(function(){return e("#sending-emails-site-method-phpmail").attr("checked","checked"),l(),!1}),e("#send-test-mail-sendmail").click(function(){return e("#sending-emails-site-method-sendmail").attr("checked","checked"),l(),!1}),e("#send-test-mail-wpmail").click(function(){return e("#sending-emails-site-method-wpmail").attr("checked","checked"),l(),!1}),e("#send-test-mail-smtp").click(function(){return l(),!1}),e("#bounce-connector").click(m),e(document).on("click",".bounce-submit",function(){return d(),e(".allmsgs").dialog("close"),tb_show(wysijatrans.processbounceT,e(this).attr("href2")+"&KeepThis=true&TB_iframe=true&height=400&width=600",null),tb_showIframe(),!1}),e(".forwardto").change(function(){e(this).attr("checked")?e("#"+e(this).attr("id")+"_input").show():e("#"+e(this).attr("id")+"_input").hide()}),e.each(e(".hideifnovalue"),function(){""==e(this).find("input").val()&&e(this).hide()}),e("#wysija-settings").submit(function(){var i=!1;return e(".bounce-forward-email").each(function(){var t=trim(e(this).val());""!==t&&t==e("#bounce_email").val()&&(e('#wysija-tabs a[href="#bounce"]').trigger("click"),e('#wysija-innertabs a[href="#actions"]').trigger("click"),e(this).css("border","1px solid #CC0000"),e("#bounce-msg-error").addClass("error"),e("#bounce-msg-error").html(wysijatrans.errorbounceforward),i=!0)}),i?!1:(e('select[name="wysija[config][sending_emails_each]"]').removeAttr("disabled"),void 0)}),e("#bounce-process-auto").attr("checked")?e("#bounce-frequency").show():e("#bounce-frequency").hide(),e("#bounce-process-auto").change(function(){e(this).attr("checked")?e("#bounce-frequency").show():e("#bounce-frequency").hide()}),e(".activateInput").change(h),e(document).on("click","#wysija-innertabs a",function(){return e("#wysija-innertabs a").removeClass("nav-tab-active"),e(this).addClass("nav-tab-active"),e(".wysija-innerpanel").hide(),e(e(this).attr("href")).length>0&&e(e(this).attr("href")).show(),e(this).blur(),!1}),e(document).on("click","#wysija-tabs a",function(){e("#wysija-tabs a").removeClass("nav-tab-active"),e(this).addClass("nav-tab-active"),e(".wysija-panel").hide();var i=e(this).attr("href").substring(1);return e("#"+i).length>0&&("basics"===i&&"true"!==mpEmailCheck.isGmail?(b(),e("#"+i).show(),e("#from_email").qtip("show")):(e("#"+i).show(),e("#from_email").qtip("hide")),window.location.hash="tab-"+i),e(this).blur(),!1}),e("#from_email").on("keyup",function(){"gmail.com"===e(this).val().toLowerCase().split("@")[1]?e(this).qtip("option","content.text",mpEmailCheck.gmailText):e(this).qtip("option","content.text",mpEmailCheck.text)}),e(document).on("click","#tip-send-with",function(i){e('.nav-tab[href="#sendingmethod"]').trigger("click"),i.preventDefault()}),e(document).ready(function(){if(r(),o(),a(),h(),n(),s(),t(null),i(),e(".subscribers-count-list").change(p),e(".wysija-panel").hide(),e(".wysija-innerpanel").hide(),window.location.hash.length>0){var c="#"+window.location.hash.substring(5);e('#wysija-tabs a[href="'+c+'"]').trigger("click")}else e("#wysija-tabs .nav-tab").first().trigger("click");e("#wysija-innertabs .nav-tab-active").trigger("click"),e("#analytics-0").is(":checked")&&e("#advanced .industry").hide(),e("#analytics-1").change(function(){"1"==e(this).val()&&e("#advanced .industry").show()}),e("#analytics-0").change(function(){"0"==e(this).val()&&e("#advanced .industry").hide()}),e("#"+getURLParameter("scroll_to")).length>0&&(e("html,body").animate({scrollTop:e("#"+getURLParameter("scroll_to")).offset().top-e("#wpadminbar").height()},500),e("#"+getURLParameter("scroll_to")).css({"background-color":"#f8fcff","font-size":"16px","font-weight":"bold"}))}),e("#dkimpub, #domainrecord, .subscribers-count-shortcode").click(function(){this.select()});var v=e("#ms-smtp-login").val();e(".ms-hidechoice").hide(),e(".ms-choice-sending-method-"+e('input[name="wysija[config][ms_sending_method]"]:checked').val()).show(),e('input[name="wysija[config][ms_sending_method]"]').change(function(){e(".ms-hidechoice").hide(),e(".ms-choice-sending-method-"+this.value).show()}),e("#ms-sending-emails-each").change(function(){y()}),e('input[name="wysija[config][ms_sending_config]"]').change(function(){w()}),e('input[name="wysija[config][ms_sending_emails_site_method]"]').change(function(){"sendmail"==e('input[name="wysija[config][ms_sending_emails_site_method]"]:checked').val()?e("#ms_p-sending-emails-site-method-sendmail-path").show():e("#ms_p-sending-emails-site-method-sendmail-path").hide()}),e('input[name="wysija[config][ms_sending_emails_site_method]"]').change(),e("#ms-smtp-host").keyup(g),e("#ms-smtp-rest").change(f),e("#ms-send-test-mail-phpmail").click(function(){return e("#ms-sending-emails-site-method-phpmail").attr("checked","checked"),_(),!1}),e("#ms-send-test-mail-sendmail").click(function(){return e("#ms-sending-emails-site-method-sendmail").attr("checked","checked"),_(),!1}),e("#ms-send-test-mail-smtp").click(function(){return _(),!1}),e.each(e(".hideifnovalue"),function(){""==e(this).find("input").val()&&e(this).hide()}),e("table.capabilities_form .view_all").click(function(){e("table.capabilities_form tr.hidden").removeClass("hidden"),objTr=e(this).parents("tr")[0],e(objTr).remove()}),e(document).ready(function(){w(),y(),g(),f()})}),window.mailpoet="object"==typeof window.mailpoet?window.mailpoet:{$:{}},function(e,i){e(document).on({ready:function(){i.mailpoet.$.geeky=e(".mailpoet-geeky-toggle"),i.mailpoet.$.geeky.data("l18n",{hide:i.mailpoet.$.geeky.data("hide"),show:i.mailpoet.$.geeky.text()}),i.mailpoet.$.geeky_rows=e(".super-advanced"),i.mailpoet.$.geeky.on({click:function(t){t.preventDefault();var n=i.mailpoet.$.geeky.data("l18n");i.mailpoet.$.geeky.hasClass("is_toggled")?(i.mailpoet.$.geeky.removeClass("is_toggled").text(n.hide),i.mailpoet.$.geeky_rows.removeClass("hidden"),void 0!==t.originalEvent&&e.cookie("geeky_option",1)):(i.mailpoet.$.geeky.addClass("is_toggled").text(n.show),i.mailpoet.$.geeky_rows.addClass("hidden"),void 0!==t.originalEvent&&e.cookie("geeky_option",0))}}),1==e.cookie("geeky_option")?i.mailpoet.$.geeky.trigger("click"):i.mailpoet.$.geeky_rows.addClass("hidden")}})}(jQuery,window);
|
js/admin-global.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
(function(
|
1 |
+
(function(n){"use strict";n(document).ready(function(){n(".mp-select-sort").on({sort:function(){n(this).each(function(o,t){var e=n(t),r=e.children("option");r.detach().sort(function(n,o){return"NA"===n.innerHTML?1:"NA"===o.innerHTML?-1:n.innerHTML.toLowerCase()>o.innerHTML.toLowerCase()?1:-1}).appendTo(e)})}}).trigger("sort")})})(jQuery.noConflict(),_.noConflict());
|
js/jquery/pluploadHandler.js
CHANGED
@@ -41,7 +41,7 @@ function fileUploading(up, file) {
|
|
41 |
setTimeout(function(){
|
42 |
var done;
|
43 |
|
44 |
-
if ( file.status < 3 && file.loaded
|
45 |
wpFileError(file, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
|
46 |
up.stop(); // stops the whole queue
|
47 |
up.removeFile(file);
|
@@ -109,9 +109,6 @@ function WYSIJAprepareMediaItem(fileObj, serverData) {
|
|
109 |
jQuery('.bar', item).remove();
|
110 |
jQuery('.progress', item).hide();
|
111 |
|
112 |
-
// trim the attachement_id
|
113 |
-
serverData = serverData.trim();
|
114 |
-
|
115 |
// Old style: Append the HTML returned by the server -- thumbnail and form inputs
|
116 |
if ( isNaN(serverData) || !serverData ) {
|
117 |
item.append(serverData);
|
@@ -155,8 +152,6 @@ function WYSIJAsetParams(result,fileObj){
|
|
155 |
var imgdimensions=null;
|
156 |
|
157 |
wpid=jQuery('#media-item-'+fileObj.id).attr('alt');
|
158 |
-
// trim the attachment id
|
159 |
-
wpid = wpid.trim();
|
160 |
dims=jQuery('#media-dims-'+wpid).html();
|
161 |
imgdimensions=dims.split(' × ');
|
162 |
|
@@ -217,11 +212,10 @@ function WYSIJAsetParams(result,fileObj){
|
|
217 |
|
218 |
function setResize(arg) {
|
219 |
if ( arg ) {
|
220 |
-
if ( uploader.features.jpgresize )
|
221 |
uploader.settings['resize'] = { width: resize_width, height: resize_height, quality: 100 };
|
222 |
-
|
223 |
uploader.settings.multipart_params.image_resize = true;
|
224 |
-
}
|
225 |
} else {
|
226 |
delete(uploader.settings.resize);
|
227 |
delete(uploader.settings.multipart_params.image_resize);
|
@@ -445,13 +439,6 @@ jQuery(document).ready(function($){
|
|
445 |
fileQueued(file);
|
446 |
});
|
447 |
|
448 |
-
// Ok, this is a fix; Not the best solution for
|
449 |
-
// We have to keep our heads looking for Plupload changes
|
450 |
-
// at the WordPress Core
|
451 |
-
up.settings.resize = {
|
452 |
-
resize: true
|
453 |
-
};
|
454 |
-
|
455 |
up.refresh();
|
456 |
up.start();
|
457 |
});
|
41 |
setTimeout(function(){
|
42 |
var done;
|
43 |
|
44 |
+
if ( file.status < 3 && file.loaded == 0 ) { // not uploading
|
45 |
wpFileError(file, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
|
46 |
up.stop(); // stops the whole queue
|
47 |
up.removeFile(file);
|
109 |
jQuery('.bar', item).remove();
|
110 |
jQuery('.progress', item).hide();
|
111 |
|
|
|
|
|
|
|
112 |
// Old style: Append the HTML returned by the server -- thumbnail and form inputs
|
113 |
if ( isNaN(serverData) || !serverData ) {
|
114 |
item.append(serverData);
|
152 |
var imgdimensions=null;
|
153 |
|
154 |
wpid=jQuery('#media-item-'+fileObj.id).attr('alt');
|
|
|
|
|
155 |
dims=jQuery('#media-dims-'+wpid).html();
|
156 |
imgdimensions=dims.split(' × ');
|
157 |
|
212 |
|
213 |
function setResize(arg) {
|
214 |
if ( arg ) {
|
215 |
+
if ( uploader.features.jpgresize )
|
216 |
uploader.settings['resize'] = { width: resize_width, height: resize_height, quality: 100 };
|
217 |
+
else
|
218 |
uploader.settings.multipart_params.image_resize = true;
|
|
|
219 |
} else {
|
220 |
delete(uploader.settings.resize);
|
221 |
delete(uploader.settings.multipart_params.image_resize);
|
439 |
fileQueued(file);
|
440 |
});
|
441 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
442 |
up.refresh();
|
443 |
up.start();
|
444 |
});
|
js/jquery/uploadHandlers.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
|
|
|
2 |
function WYSIJAprepareMediaItem(fileObj, serverData) {
|
3 |
var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
|
4 |
// Move the progress bar to 100%
|
1 |
|
2 |
+
|
3 |
function WYSIJAprepareMediaItem(fileObj, serverData) {
|
4 |
var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
|
5 |
// Move the progress bar to 100%
|
js/qtip2/jquery.qtip.min.js
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* qTip2 v2.2.0 tips modal viewport svg imagemap ie6 | qtip2.com | Licensed MIT, GPL | Fri Nov 29 2013 13:08:34 */
|
2 |
+
|
3 |
+
!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=G,this.elements={target:a},this._id=T+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:F,attr:e,onTooltip:F,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=F}function f(a){return a===G||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?F:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?F:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==F,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,G,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||F)&&(b.title=F))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===E?{ready:E}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(S,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)for(d in this.checks[c])(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return W.concat("").join(a?"-"+a+" ":" ")}function l(c){return c&&{type:c.type,pageX:c.pageX,pageY:c.pageY,target:c.target,relatedTarget:c.relatedTarget,scrollX:c.scrollX||a.pageXOffset||b.body.scrollLeft||b.documentElement.scrollLeft,scrollY:c.scrollY||a.pageYOffset||b.body.scrollTop||b.documentElement.scrollTop}||{}}function m(a,b){return b>0?setTimeout(d.proxy(a,this),b):(a.call(this),void 0)}function n(a){return this.tooltip.hasClass(bb)?F:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=m.call(this,function(){this.toggle(E,a)},this.options.show.delay),void 0)}function o(a){if(this.tooltip.hasClass(bb))return F;var b=d(a.relatedTarget),c=b.closest(X)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(F,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(bb)||!this.options.hide.inactive?F:(clearTimeout(this.timers.inactive),this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive),void 0)}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(ib+" "))+ib,function(){var a=z.api[d.attr(this,V)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):G,p="html5"===f.metadata.type&&o?o[f.metadata.name]:G,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(E,{},z.defaults,f,"object"==typeof q?h(q):G,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===F||!j)return F;k.content.text=j}if(i.container.length||(i.container=m),i.target===F&&(i.target=n),k.show.target===F&&(k.show.target=n),k.show.solo===E&&(k.show.solo=i.container.closest("body")),k.hide.target===F&&(k.hide.target=n),k.position.viewport===E&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new B(i.at,E),i.my=new B(i.my),a.data(T))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===F)return F;return a.attr(U,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(db,l).attr("title",""),g=new e(a,k,c,!!j),a.data(T,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(T))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+tb.join(f+" ")+f).split(" "),h=0;if(sb[b])return a.css(sb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return sb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function y(a){this._ns="ie6",this.init(this.qtip=a)}var z,A,B,C,D,E=!0,F=!1,G=null,H="x",I="y",J="width",K="height",L="top",M="left",N="bottom",O="right",P="center",Q="flipinvert",R="shift",S={},T="qtip",U="data-hasqtip",V="data-qtip-id",W=["ui-widget","ui-tooltip"],X="."+T,Y="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Z=T+"-fixed",$=T+"-default",_=T+"-focus",ab=T+"-hover",bb=T+"-disabled",cb="_replacedByqTip",db="oldtitle",eb={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||F};A=e.prototype,A._when=function(a){return d.when.apply(d,a)},A.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("<div/>",{id:this._id,"class":[T,$,e.style.classes,T+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":F,"aria-describedby":this._id+"-content","aria-hidden":E}).toggleClass(bb,this.disabled).attr(V,this.id).data(T,this).appendTo(k.container).append(g.content=d("<div />",{"class":T+"-content",id:this._id+"-content","aria-atomic":E})),this.rendered=-1,this.positioning=E,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,F))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,F)),this.rendered=E,this._setWidget(),d.each(S,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=F,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(E,f.event,F),c.hiddenDuringWait=F}),z.api[this.id]=this,this},A.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=E;var a=this.target,b=a.attr(db);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(T).removeAttr(V).removeAttr(U).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(db),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=G,delete z.api[this.id]}}return this.destroyed?this.target:(a===E&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},C=A.checks={builtin:{"^id$":function(a,b,c,e){var f=c===E?z.nextid:c,g=T+"-"+f;f!==F&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),this._updateTitle(c),void 0):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new B(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(E)||this.toggle(E))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass($,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},A.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var fb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,gb=/^prerender|show\.ready/i;A.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=F,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&gb.test(b))return delete a[b],void 0;var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=fb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=E,d.each(a,d.proxy(j,this)),this.positioning=F,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?G:this.cache.event),this},A._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=E,a.then(function(a){return e.waiting=F,c._update(a,b)},G,function(a){return c._update(a,b)})):a===F||!a&&""!==a?F:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):F},A._waitForContent=function(a){var b=this.cache;return b.waiting=E,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=F}).promise()},A._updateContent=function(a,b){this._update(a,this.elements.content,b)},A._updateTitle=function(a,b){this._update(a,this.elements.title,b)===F&&this._removeTitle(F)},A._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":T+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":T+"-title","aria-atomic":E})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},A._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=G,a!==F&&this.reposition())},A.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=E;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(F),s=i.outerHeight(F),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:M,y:L},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:M,y:L},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=eb.iOS?a.innerWidth:k.width(),u=eb.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):S.imagemap&&k.is("area")?f=S.imagemap(this,k,m,S.viewport?q:F):S.svg&&k&&k[0].ownerSVGElement?f=S.svg(this,k,m,S.viewport?q:F):(t=k.outerWidth(F),u=k.outerHeight(F),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(eb.iOS>3.1&&eb.iOS<4.1||eb.iOS>=4.3&&eb.iOS<4.33||!eb.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==F)&&(w.left+=m.x===O?t:m.x===P?t/2:0,w.top+=m.y===N?u:m.y===P?u/2:0)}return w.left+=p.x+(l.x===O?-r:l.x===P?-r/2:0),w.top+=p.y+(l.y===N?-s:l.y===P?-s/2:0),S.viewport?(w.adjusted=S.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===F||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),eb.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=F,this):this},A.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!eb.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var hb=(B=A.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,P).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?I:H}).prototype;hb.invert=function(a,b){this[a]=this[a]===M?O:this[a]===O?M:b||this[a]},hb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===I||this.forceY&&"center"!==b?b+" "+a:a+" "+b},hb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},hb.clone=function(){return new B(this.string(),this.forceY)},A.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=E),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?G:!!this._trigger(k,[90]),this.destroyed?this:(i!==F&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,F),d.isFunction(o.title)&&this._updateTitle(o.title,F),!D&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+T,this._storeMouse),D=E),p||g.css("width",g.outerWidth(F)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(X,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,D&&!d(X+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+T),D=F),this.blur(c)),j=d.proxy(function(){a?(eb.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===F||r===F?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},A.show=function(a){return this.toggle(E,a)},A.hide=function(a){return this.toggle(F,a)},A.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(X),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=z.zindex+b.length;return c.hasClass(_)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+_).qtip("blur",a)),c.addClass(_)[0].style.zIndex=f),this},A.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(_),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},A.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(bb):this.disabled):"boolean"!=typeof a&&(a=E),this.rendered&&this.tooltip.toggleClass(bb,a).attr("aria-disabled",a),this.disabled=!!a,this)},A.enable=function(){return this.disable(F)},A._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":T+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(bb)||a.hide(b),F})},A._updateButton=function(a){if(!this.rendered)return F;var b=this.elements.button;a?this._createButton():b.remove()},A._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(bb);c.removeClass(bb),bb=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(bb,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass($,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(T+"-icon",!a)},A._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},A._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},A._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var ib="."+T;d(function(){r(X,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Z)&&!c.hasClass(bb)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(ab,b)}),r("["+V+"]",Y,p)}),A._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||G,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=F,!e.isDefaultPrevented()},A._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?(h.push(a.splice(c,1)[0]),void 0):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},A._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?F:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay),void 0)}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=E}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},A._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Z)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0,e=b.parents(X).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),z.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},A._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},z=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=G,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],T):G;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,T);if(!a)return E;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),F;a.set(b,e)}}),g!==G?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(E,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===F||c.length<1||z.api[c]?z.nextid++:c,b=s(d(this),c,k),b===F?E:(z.api[c]=b,d.each(S,function(){"initialize"===this.initialize&&this(b)}),b._assignInitialEvents(j),void 0)}))},d.qtip=e,z.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,db):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(db,b))}return d.fn["attr"+cb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+cb].apply(this,arguments));return a||b.filter("["+db+"]").attr("title",function(){return d.attr(this,db)}).removeAttr(db),b}},function(a,b){if(!b||d.fn[a+cb])return E;var c=d.fn[a+cb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+cb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(U))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+cb].apply(this,arguments)}),z.version="2.2.0",z.nextid=0,z.inactiveEvents=Y,z.zindex=15e3,z.defaults={prerender:F,id:F,overwrite:E,suppress:E,content:{text:E,attr:"title",title:F,button:F},position:{my:"top left",at:"bottom right",target:F,container:F,viewport:F,adjust:{x:0,y:0,mouse:E,scroll:E,resize:E,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:F})}},show:{target:F,event:"mouseenter",effect:E,delay:90,solo:F,ready:F,autofocus:F},hide:{target:F,event:"mouseleave",effect:E,delay:0,fixed:F,inactive:F,leave:"window",distance:F},style:{classes:"",widget:F,width:F,height:F,def:E},events:{render:G,move:G,show:G,hide:G,toggle:G,visible:G,hidden:G,focus:G,blur:G}};var jb,kb="margin",lb="border",mb="color",nb="background-color",ob="transparent",pb=" !important",qb=!!b.createElement("canvas").getContext,rb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,sb={},tb=["Webkit","O","Moz","ms"];if(qb)var ub=a.devicePixelRatio||1,vb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),wb=ub/vb;else var xb=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":T+"-tip"}).prependTo(a.tooltip),qb?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=xb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===L||a.y===P&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(E))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===F||b===F?a=F:a===E?a=new B(b.string()):a.string||(a=new B(a),a.fixed=E),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=lb+t(b)+"Width";return(c?v(c,e):v(d.content,e)||v(this._useTitle(a)&&d.titlebar||d.content,e)||v(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=lb+t(a.y)+t(a.x)+"Radius";return eb.ie<9?0:v(this._useTitle(a)&&b.titlebar||b.content,c)||v(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||rb.test(d)?F:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=lb+t(a[a.precedance])+t(mb),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,nb)||g(f,nb)||g(b.content,nb)||g(b.tooltip,nb)||c.css(nb),h[1]=g(c,e,mb)||g(f,e,mb)||g(b.content,e,mb)||g(b.tooltip,e,mb)||b.tooltip.css(e),d("*",c).add(c).css("cssText",nb+":"+ob+pb+";"+lb+":0"+pb+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===I,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(qb||eb.ie)&&this._parseCorner(this.options.corner);return(this.enabled=!!this.corner&&"c"!==this.corner.abbrev())&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===F?r=b:(r=new B(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===H?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==ob?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!rb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==E?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===I?[s(r.x===M?l:r.x===O?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===L?k[1]-q[1]:0)]:[s(r.x===M?k[0]-q[0]:0),s(r.y===L?l:r.y===N?k[1]-q[1]-l:(k[1]-q[1])/2)],qb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,wb),i=this._calculateTip(r,this.size,wb),o.attr(J,k[0]*wb).attr(K,k[1]*wb),o.css(J,k[0]).css(K,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*wb,j[1]*wb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===eb.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(P)>-1),left:j[0]-j[2]*Number(f===H),top:j[1]-j[2]*Number(f===I),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(xb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==F&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return F;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===H&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===P?(h=c===I?M:L,j[h]="50%",j[kb+"-"+h]=-Math.round(b[c===I?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))
|
4 |
+
}),j[a[c]]-=b[c===H?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===R&&j.precedance===b&&k[d]&&j[c]!==P?j.precedance=j.precedance===H?I:H:a!==R&&k[d]&&(j[b]=j[b]===P?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===P?p[kb+"-"+b]=o[a]=g[kb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=F),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:F,top:F,x:0,y:0},p={};this.corner.fixed!==E&&(e(m,H,I,M,O),e(n,I,H,L,N),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,F)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===R&&!!k.left)&&f(H,M,O),(o.top=n===R&&!!k.top)&&f(I,L,N),this.element.css(p).toggle(!(o.x&&o.y||j.x===P&&o.y||j.y===P&&o.x)),d.left-=g.left.charAt?g.user:m!==R||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==R||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),jb=S.tip=function(a){return new w(a,a.options.style.tip)},jb.initialize="render",jb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=E)}},C.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(E,z.defaults,{style:{tip:{corner:E,mimic:F,width:6,height:6,border:E,offset:0}}});var yb,zb,Ab="qtip-modal",Bb="."+Ab;zb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(X);b=j.length<1?F:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(X)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return F}}).hide(),d(b.body).bind("focusin"+Bb,e),d(b).bind("keydown"+Bb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Bb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==F?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Bb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==F&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==F||!e&&p.length?j:(i.stop(E,F),d.isFunction(m)?m.call(i,e):m===F?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Bb).length||i.detach(),a()}),h=e,f.destroyed&&(f=G),j)}}),j.init()},zb=new zb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=zb.elem,b.addClass(Ab).css("z-index",z.modal_zindex+d(Bb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(zb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Bb),f=z.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);zb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+_).qtip("blur",a.originalEvent),b.addClass(_)[0].style.zIndex=f,zb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Bb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this),void 0):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:(zb.toggle(this.qtip,!!b,c),void 0)},destroy:function(){this.qtip.tooltip.removeClass(Ab),this.qtip._unbind(this.qtip.tooltip,this._ns),zb.toggle(this.qtip,F),delete this.qtip.elements.overlay}}),yb=S.modal=function(a){return new x(a,a.options.show.modal)},yb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=E))},z.modal_zindex=z.zindex-200,yb.initialize="render",C.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(E,z.defaults,{show:{modal:{on:F,effect:E,blur:E,stealfocus:E,escape:E}}}),S.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===R,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===J?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===P?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===J?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===Q?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===P?-C:C)+e,l.invert(a,g)),d[f]<r&&-d[f]>B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,E={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||E,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(F),q=B[0]===a?B.height():B.outerHeight(F),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||E,("shift"!==z||"shift"!==A)&&(l=v.clone()),E={left:"none"!==z?j(H,I,z,x.x,M,O,J,f,h):0,top:"none"!==A?j(I,H,A,x.y,L,N,K,g,i):0},l&&D.lastClass!==(m=T+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),E):E},S.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:F},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===M?i=d:b.x===O?i=f.width-d:i+=Math.floor(d/2),b.y===L?j=e:b.y===N?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===M&&k>=i||b.x===O&&i>=k||b.x===P&&(i>k||k>f.width-i)||b.y===L&&l>=j||b.y===N&&j>=l||b.y===P&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=S.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:F}},circle:function(a,b,c,d){return S.polys.ellipse(a,b,c,c,d)}},S.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return F;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=S.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m<k;)l=n.getItem?n.getItem(m):n[m],o.push.apply(o,[l.x,l.y]);o=S.polys.polygon(o,e);break;default:o=r.getBoundingClientRect(),o={width:o.width,height:o.height,position:{left:o.left,top:o.top}},v=!1}return p=o.position,s=s[0],v&&(s.createSVGPoint&&(h=r.getScreenCTM(),n=s.createSVGPoint(),n.x=p.left,n.y=p.top,i=n.matrixTransform(h),p.left=i.x,p.top=i.y),s.viewBox&&(j=s.viewBox.baseVal)&&j.width&&j.height&&(t*=f/j.width,u*=g/j.height)),p.left+=q.scrollLeft(),p.top+=q.scrollTop(),o},S.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=b.attr("shape").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return F;if("polygon"===j)h=S.polys.polygon(m,c);else{if(!S.polys[j])return F;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=S.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(F)-k.width())/2),e.top+=Math.ceil((k.outerHeight(F)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h};var Cb,Db='<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';d.extend(y.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Db).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("<div/>",{id:T+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(F),width:c.outerWidth(F)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[J,M]:[K,L],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(K,f.height),f.width?e.css(J,f.width):(e.css(J,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(J,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Cb=S.ie6=function(a){return 6===eb.ie?new y(a):F},Cb.initialize="render",C.ie6={"^content|style$":function(){this.redraw()}}})}(window,document);
|
5 |
+
//# sourceMappingURL=http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0//var/www/qtip2/build/archive/2.2.0/jquery.qtip.min.map
|
js/tinymce/tiny_mce.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.11",releaseDate:"2014-05-08",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isIE11=g.indexOf("Trident/")!=-1&&(g.indexOf("rv:")!=-1||o.appName.indexOf("Netscape")!=-1);s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName)||s.isIE11;s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&!s.isIE11&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&c.isArray(g)){return true}return typeof(g)==f},isArray:Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(c,e,d){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,e,d)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&Object.prototype.toString.call(o)==="[object Array]"){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey},metaKeyPressed:function(b){return a.isMac?b.metaKey:b.ctrlKey&&!b.altKey}}})(tinymce);tinymce.util.Quirks=function(a){var j=tinymce.VK,f=j.BACKSPACE,l=j.DELETE,e=a.dom,n=a.selection,J=a.settings,y=a.parser,q=a.serializer,G=tinymce.each;function C(P,O){try{a.getDoc().execCommand(P,false,O)}catch(N){}}function p(){var N=a.getDoc().documentMode;return N?N:6}function B(N){return N.isDefaultPrevented()}function L(){function N(T){var P,R,O,U,Q,S,V;function W(){if(Q.nodeType==3){if(T&&S==Q.length){return true}if(!T&&S===0){return true}}}P=n.getRng();var X=[P.startContainer,P.startOffset,P.endContainer,P.endOffset];if(!P.collapsed){T=true}Q=P[(T?"start":"end")+"Container"];S=P[(T?"start":"end")+"Offset"];if(Q.nodeType==3){R=e.getParent(P.startContainer,e.isBlock);if(T){R=e.getNext(R,e.isBlock)}if(R&&(W()||!P.collapsed)){O=e.create("em",{id:"__mceDel"});G(tinymce.grep(R.childNodes),function(Y){O.appendChild(Y)});R.appendChild(O)}}P=e.createRng();P.setStart(X[0],X[1]);P.setEnd(X[2],X[3]);n.setRng(P);a.getDoc().execCommand(T?"ForwardDelete":"Delete",false,null);if(O){U=n.getBookmark();while(V=e.get("__mceDel")){e.remove(V,true)}n.moveToBookmark(U)}}a.onKeyDown.add(function(O,Q){var P;P=Q.keyCode==l;if(!B(Q)&&(P||Q.keyCode==f)&&!j.modifierPressed(Q)){Q.preventDefault();N(P)}});a.addCommand("Delete",function(){N()})}function s(){function N(Q){var P=e.create("body");var R=Q.cloneContents();P.appendChild(R);return n.serializer.serialize(P,{format:"html"})}function O(P){var R=N(P);var S=e.createRng();S.selectNode(a.getBody());var Q=N(S);return R===Q}a.onKeyDown.add(function(Q,S){var R=S.keyCode,P;if(!B(S)&&(R==l||R==f)){P=Q.selection.isCollapsed();if(P&&!e.isEmpty(Q.getBody())){return}if(tinymce.isIE&&!P){return}if(!P&&!O(Q.selection.getRng())){return}Q.setContent("");Q.selection.setCursorLocation(Q.getBody(),0);Q.nodeChanged()}})}function K(){a.onKeyDown.add(function(N,O){if(!B(O)&&O.keyCode==65&&j.metaKeyPressed(O)){O.preventDefault();N.execCommand("SelectAll")}})}function M(){if(!a.settings.content_editable){e.bind(a.getDoc(),"focusin",function(N){n.setRng(n.getRng())});e.bind(a.getDoc(),"mousedown",function(N){if(N.target==a.getDoc().documentElement){a.getWin().focus();n.setRng(n.getRng())}})}}function D(){a.onKeyDown.add(function(N,Q){if(!B(Q)&&Q.keyCode===f){if(n.isCollapsed()&&n.getRng(true).startOffset===0){var P=n.getNode();var O=P.previousSibling;if(O&&O.nodeName&&O.nodeName.toLowerCase()==="hr"){e.remove(O);tinymce.dom.Event.cancel(Q)}}}})}function A(){if(!Range.prototype.getClientRects){a.onMouseDown.add(function(O,P){if(!B(P)&&P.target.nodeName==="HTML"){var N=O.getBody();N.blur();setTimeout(function(){N.focus()},0)}})}}function h(){a.onClick.add(function(N,O){O=O.target;if(/^(IMG|HR)$/.test(O.nodeName)){n.getSel().setBaseAndExtent(O,0,O,1)}if(O.nodeName=="A"&&e.hasClass(O,"mceItemAnchor")){n.select(O)}N.nodeChanged()})}function c(){function O(){var Q=e.getAttribs(n.getStart().cloneNode(false));return function(){var R=n.getStart();if(R!==a.getBody()){e.setAttrib(R,"style",null);G(Q,function(S){R.setAttributeNode(S.cloneNode(true))})}}}function N(){return !n.isCollapsed()&&e.getParent(n.getStart(),e.isBlock)!=e.getParent(n.getEnd(),e.isBlock)}function P(Q,R){R.preventDefault();return false}a.onKeyPress.add(function(Q,S){var R;if(!B(S)&&(S.keyCode==8||S.keyCode==46)&&N()){R=O();Q.getDoc().execCommand("delete",false,null);R();S.preventDefault();return false}});e.bind(a.getDoc(),"cut",function(R){var Q;if(!B(R)&&N()){Q=O();a.onKeyUp.addToTop(P);setTimeout(function(){Q();a.onKeyUp.remove(P)},0)}})}function b(){var O,N;e.bind(a.getDoc(),"selectionchange",function(){if(N){clearTimeout(N);N=0}N=window.setTimeout(function(){var P=n.getRng();if(!O||!tinymce.dom.RangeUtils.compareRanges(P,O)){a.nodeChanged();O=P}},50)})}function z(){document.body.setAttribute("role","application")}function v(){a.onKeyDown.add(function(N,P){if(!B(P)&&P.keyCode===f){if(n.isCollapsed()&&n.getRng(true).startOffset===0){var O=n.getNode().previousSibling;if(O&&O.nodeName&&O.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(P)}}}})}function E(){if(p()>7){return}C("RespectVisibilityInDesign",true);a.contentStyles.push(".mceHideBrInPre pre br {display: none}");e.addClass(a.getBody(),"mceHideBrInPre");y.addNodeFilter("pre",function(N,P){var Q=N.length,S,O,T,R;while(Q--){S=N[Q].getAll("br");O=S.length;while(O--){T=S[O];R=T.prev;if(R&&R.type===3&&R.value.charAt(R.value-1)!="\n"){R.value+="\n"}else{T.parent.insert(new tinymce.html.Node("#text",3),T,true).value="\n"}}}});q.addNodeFilter("pre",function(N,P){var Q=N.length,S,O,T,R;while(Q--){S=N[Q].getAll("br");O=S.length;while(O--){T=S[O];R=T.prev;if(R&&R.type==3){R.value=R.value.replace(/\r?\n$/,"")}}}})}function g(){e.bind(a.getBody(),"mouseup",function(P){var O,N=n.getNode();if(N.nodeName=="IMG"){if(O=e.getStyle(N,"width")){e.setAttrib(N,"width",O.replace(/[^0-9%]+/g,""));e.setStyle(N,"width","")}if(O=e.getStyle(N,"height")){e.setAttrib(N,"height",O.replace(/[^0-9%]+/g,""));e.setStyle(N,"height","")}}})}function d(){a.onKeyDown.add(function(T,U){var S,N,O,Q,R,V,P;S=U.keyCode==l;if(!B(U)&&(S||U.keyCode==f)&&!j.modifierPressed(U)){N=n.getRng();O=N.startContainer;Q=N.startOffset;P=N.collapsed;if(O.nodeType==3&&O.nodeValue.length>0&&((Q===0&&!P)||(P&&Q===(S?0:1)))){V=O.previousSibling;if(V&&V.nodeName=="IMG"){return}nonEmptyElements=T.schema.getNonEmptyElements();U.preventDefault();R=e.create("br",{id:"__tmp"});O.parentNode.insertBefore(R,O);T.getDoc().execCommand(S?"ForwardDelete":"Delete",false,null);O=n.getRng().startContainer;V=O.previousSibling;if(V&&V.nodeType==1&&!e.isBlock(V)&&e.isEmpty(V)&&!nonEmptyElements[V.nodeName.toLowerCase()]){e.remove(V)}e.remove("__tmp")}}})}function I(){a.onKeyDown.add(function(R,S){var P,O,T,N,Q;if(B(S)||S.keyCode!=j.BACKSPACE){return}P=n.getRng();O=P.startContainer;T=P.startOffset;N=e.getRoot();Q=O;if(!P.collapsed||T!==0){return}while(Q&&Q.parentNode&&Q.parentNode.firstChild==Q&&Q.parentNode!=N){Q=Q.parentNode}if(Q.tagName==="BLOCKQUOTE"){R.formatter.toggle("blockquote",null,Q);P=e.createRng();P.setStart(O,0);P.setEnd(O,0);n.setRng(P)}})}function H(){function N(){a._refreshContentEditable();C("StyleWithCSS",false);C("enableInlineTableEditing",false);if(!J.object_resizing){C("enableObjectResizing",false)}}if(!J.readonly){a.onBeforeExecCommand.add(N);a.onMouseDown.add(N)}}function u(){function N(O,P){G(e.select("a"),function(S){var Q=S.parentNode,R=e.getRoot();if(Q.lastChild===S){while(Q&&!e.isBlock(Q)){if(Q.parentNode.lastChild!==Q||Q===R){return}Q=Q.parentNode}e.add(Q,"br",{"data-mce-bogus":1})}})}a.onExecCommand.add(function(O,P){if(P==="CreateLink"){N(O)}});a.onSetContent.add(n.onSetContent.add(N))}function o(){if(J.forced_root_block){a.onInit.add(function(){C("DefaultParagraphSeparator",J.forced_root_block)})}}function r(){function N(P,O){if(!P||!O.initial){a.execCommand("mceRepaint")}}a.onUndo.add(N);a.onRedo.add(N);a.onSetContent.add(N)}function i(){a.onKeyDown.add(function(O,P){var N;if(!B(P)&&P.keyCode==f){N=O.getDoc().selection.createRange();if(N&&N.item){P.preventDefault();O.undoManager.beforeChange();e.remove(N.item(0));O.undoManager.add()}}})}function t(){var N;if(p()>=10){N="";G("p div h1 h2 h3 h4 h5 h6".split(" "),function(O,P){N+=(P>0?",":"")+O+":empty"});a.contentStyles.push(N+"{padding-right: 1px !important}")}}function x(){var P,O,af,N,aa,ad,ab,ae,Q,R,ac,Y,X,Z=document,V=a.getDoc();if(!J.object_resizing||J.webkit_fake_resize===false){return}C("enableObjectResizing",false);ac={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};function T(aj){var ai,ah;ai=aj.screenX-ad;ah=aj.screenY-ab;Y=ai*aa[2]+ae;X=ah*aa[3]+Q;Y=Y<5?5:Y;X=X<5?5:X;if(j.modifierPressed(aj)||(af.nodeName=="IMG"&&aa[2]*aa[3]!==0)){Y=Math.round(X/R);X=Math.round(Y*R)}e.setStyles(N,{width:Y,height:X});if(aa[2]<0&&N.clientWidth<=Y){e.setStyle(N,"left",P+(ae-Y))}if(aa[3]<0&&N.clientHeight<=X){e.setStyle(N,"top",O+(Q-X))}}function ag(){function ah(ai,aj){if(aj){if(af.style[ai]||!a.schema.isValid(af.nodeName.toLowerCase(),ai)){e.setStyle(af,ai,aj)}else{e.setAttrib(af,ai,aj)}}}ah("width",Y);ah("height",X);e.unbind(V,"mousemove",T);e.unbind(V,"mouseup",ag);if(Z!=V){e.unbind(Z,"mousemove",T);e.unbind(Z,"mouseup",ag)}e.remove(N);S(af)}function S(ak){var ai,aj,ah;U();ai=e.getPos(ak);P=ai.x;O=ai.y;aj=ak.offsetWidth;ah=ak.offsetHeight;if(af!=ak){af=ak;Y=X=0}G(ac,function(an,al){var am;am=e.get("mceResizeHandle"+al);if(!am){am=e.add(V.documentElement,"div",{id:"mceResizeHandle"+al,"class":"mceResizeHandle",style:"cursor:"+al+"-resize; margin:0; padding:0"});e.bind(am,"mousedown",function(ao){ao.preventDefault();ag();ad=ao.screenX;ab=ao.screenY;ae=af.clientWidth;Q=af.clientHeight;R=Q/ae;aa=an;N=af.cloneNode(true);e.addClass(N,"mceClonedResizable");e.setStyles(N,{left:P,top:O,margin:0});V.documentElement.appendChild(N);e.bind(V,"mousemove",T);e.bind(V,"mouseup",ag);if(Z!=V){e.bind(Z,"mousemove",T);e.bind(Z,"mouseup",ag)}})}else{e.show(am)}e.setStyles(am,{left:(aj*an[0]+P)-(am.offsetWidth/2),top:(ah*an[1]+O)-(am.offsetHeight/2)})});if(!tinymce.isOpera&&af.nodeName=="IMG"){af.setAttribute("data-mce-selected","1")}}function U(){if(af){af.removeAttribute("data-mce-selected")}for(var ah in ac){e.hide("mceResizeHandle"+ah)}}a.contentStyles.push(".mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}");function W(){var ah=e.getParent(n.getNode(),"table,img");G(e.select("img[data-mce-selected]"),function(ai){ai.removeAttribute("data-mce-selected")});if(ah){S(ah)}else{U()}}a.onNodeChange.add(W);e.bind(V,"selectionchange",W);a.serializer.addAttributeFilter("data-mce-selected",function(ah,ai){var aj=ah.length;while(aj--){ah[aj].attr(ai,null)}})}function F(){if(p()<9){y.addNodeFilter("noscript",function(N){var O=N.length,P,Q;while(O--){P=N[O];Q=P.firstChild;if(Q){P.attr("data-mce-innertext",Q.value)}}});q.addNodeFilter("noscript",function(N){var O=N.length,P,R,Q;while(O--){P=N[O];R=N[O].firstChild;if(R){R.value=tinymce.html.Entities.decode(R.value)}else{Q=P.attributes.map["data-mce-innertext"];if(Q){P.attr("data-mce-innertext",null);R=new tinymce.html.Node("#text",3);R.value=Q;R.raw=true;P.append(R)}}}})}}function m(){a.contentStyles.push("body {min-height: 100px}");a.onClick.add(function(N,O){if(O.target.nodeName=="HTML"){a.execCommand("SelectAll");a.selection.collapse(true);a.nodeChanged()}})}function k(){a.onInit.add(function(){var N;a.getBody().addEventListener("mscontrolselect",function(O){setTimeout(function(){if(a.selection.getNode()!=O.target){N=a.selection.getRng();n.fakeRng=a.dom.createRng();n.fakeRng.setStartBefore(O.target);n.fakeRng.setEndAfter(O.target)}},0)},false);a.getDoc().addEventListener("selectionchange",function(O){if(N&&!tinymce.dom.RangeUtils.compareRanges(a.selection.getRng(),N)){n.fakeRng=N=null}},false)})}v();I();s();if(tinymce.isWebKit){d();L();M();h();o();if(tinymce.isIDevice){b()}else{x();K()}}if(tinymce.isIE&&!tinymce.isIE11){D();z();E();g();i();t();F()}if(tinymce.isIE11){m();k()}if(tinymce.isGecko&&!tinymce.isIE11){D();A();c();H();u();r()}if(tinymce.isOpera){x()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':""","'":"'","<":"<",">":">","&":"&"};d={"<":"<",">":">","&":"&",""":'"',"'":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;if(z["border-image"]==="none"){delete z["border-image"]}F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][B]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|border][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]wbr[A][]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script noscript style textarea");q=m("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object script",z);textBlockElementsMap=m("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");v=m("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup",textBlockElementsMap);function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G.toUpperCase()]={};v[G]={}}if(!s[G]){s[G]=s[K]}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getTextBlockElements=function(){return textBlockElementsMap};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.isValid=function(F,E){var H,G,I=B(F);if(I){if(E){if(I.attributes[E]){return true}H=I.attributePatterns;if(H){G=H.length;while(G--){if(H[G].pattern.test(F)){return true}}}}else{return true}}return false};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x;u.elements=s}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=c.self_closing_elements||e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-mce-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(n){var p,q,y,x,A,o,r,l,u,v,k,t,m,z,s;t=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();m=h.getTextBlockElements();for(p=0;p<n.length;p++){q=n[p];if(!q.parent||q.fixed){continue}if(m[q.name]&&q.parent.name=="li"){z=q.next;while(z){if(m[z.name]){z.name="li";z.fixed=true;q.parent.insert(z,q.parent)}else{break}z=z.next}q.unwrap(q);continue}x=[q];for(y=q.parent;y&&!h.isValidChild(y.name,q.name)&&!t[y.name];y=y.parent){x.push(y)}if(y&&x.length>1){x.reverse();A=o=f.filterNode(x[0].clone());for(u=0;u<x.length-1;u++){if(h.isValidChild(o.name,x[u].name)){r=f.filterNode(x[u].clone());o.append(r)}else{r=o}for(l=x[u].firstChild;l&&l!=x[u+1];){s=l.next;r.append(l);l=s}o=r}if(!A.isEmpty(k)){y.insert(A,x[0],true);y.insert(q,A)}else{y.insert(q,x[0],true)}y=x[0];if(y.isEmpty(k)||y.firstChild===y.lastChild&&y.firstChild.name==="br"){y.empty().remove()}}else{if(q.parent){if(q.name==="li"){z=q.prev;if(z&&(z.name==="ul"||z.name==="ul")){z.append(q);continue}z=q.next;if(z&&(z.name==="ul"||z.name==="ul")){z.insert(q,z.firstChild,true);continue}q.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(q.parent.name,"div")&&h.isValidChild("div",q.name)){q.wrap(f.filterNode(new a("div",1)))}else{if(q.name==="style"||q.name==="script"){q.empty().remove()}else{q.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,J,B,A,D,C,x,r,F,N,z,o,E,M=[],L,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var O=J.firstChild,l,P;while(O){l=O.next;if(O.type==3||(O.type==1&&O.name!=="p"&&!o[O.name]&&!O.attr("data-mce-type"))){if(!P){P=K(q,1);J.insert(P,O);P.append(O)}else{P.append(O)}}else{P=null}O=l}}function K(l,O){var P=new a(l,O),Q;if(l in e){Q=i[l];if(Q){Q.push(P)}else{i[l]=[P]}}return P}function I(P){var Q,l,O;for(Q=P.prev;Q&&Q.type===3;){l=Q.value.replace(t,"");if(l.length>0){Q.value=l;Q=Q.prev}else{O=Q.prev;Q.remove();Q=O}}}function H(O){var P,l={};for(P in O){if(P!=="li"&&P!="p"){l[P]=O[P]}}return l}n=new b.html.SaxParser({validate:z,self_closing_elements:H(h.getSelfClosingElements()),cdata:function(l){B.append(K("#cdata",4)).value=l},text:function(P,l){var O;if(!L){P=P.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){P=P.replace(E,"")}}if(P.length!==0){O=K("#text",3);O.raw=!!l;B.append(O).value=P}},comment:function(l){B.append(K("#comment",8)).value=l},pi:function(l,O){B.append(K(l,7)).value=O;I(B)},doctype:function(O){var l;l=B.append(K("#doctype",10));l.value=O;I(B)},start:function(l,W,P){var U,R,Q,O,S,X,V,T;Q=z?h.getElementRule(l):{};if(Q){U=K(Q.outputName||l,1);U.attributes=W;U.shortEnded=P;B.append(U);T=p[B.name];if(T&&p[U.name]&&!T[U.name]){M.push(U)}R=d.length;while(R--){S=d[R].name;if(S in W.map){F=c[S];if(F){F.push(U)}else{c[S]=[U]}}}if(o[l]){I(U)}if(!P){B=U}if(!L&&s[l]){L=true}}},end:function(l){var S,P,R,O,Q;P=z?h.getElementRule(l):{};if(P){if(o[l]){if(!L){S=B.firstChild;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R;S=S.next}else{O=S.next;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.next;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}S=B.lastChild;if(S&&S.type===3){R=S.value.replace(t,"");if(R.length>0){S.value=R;S=S.prev}else{O=S.prev;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.prev;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}}}if(L&&s[l]){L=false}if(P.removeEmpty||P.paddEmpty){if(B.isEmpty(u)){if(P.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name&&!B.attributes.map.id){Q=B.parent;B.empty().remove();B=Q;return}}}}B=B.parent}}},h);J=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&M.length){if(!m.context){j(M)}else{m.invalid=true}}if(q&&J.name=="body"){G()}if(!m.invalid){for(N in i){F=e[N];A=i[N];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,N,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return J};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("id,name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild&&!q.attr("href")){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(k.readyState=="complete"){i();return}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v.length;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){if(!r.preventDefault){r=a(r)}r.preventDefault();return false};q.stop=function(r){if(!r.stopPropagation){r=a(r)}r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){if(!q){return false}var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&!e.isIE11&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||e.isIE11||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b&&!e.isIE11){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":(b&&!e.isIE11)?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},addStyle:function(j){var k=this.doc,i;styleElm=k.getElementById("mceDefaultStyles");if(!styleElm){styleElm=k.createElement("style"),styleElm.id="mceDefaultStyles";styleElm.type="text/css";i=k.getElementsByTagName("head")[0];if(i.firstChild){i.insertBefore(styleElm,i.firstChild)}else{i.appendChild(styleElm)}}if(styleElm.styleSheet){styleElm.styleSheet.cssText+=j}else{styleElm.appendChild(k.createTextNode(j))}},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&!e.isIE11&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){var n=i.create("div");n.innerHTML="<br />"+j;g(e.grep(n.childNodes),function(p,o){if(o&&m.canHaveHTML){m.appendChild(p)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(t){switch(t.type||1){case 1:if(t.selectorText){g(t.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:try{q(t.styleSheet)}catch(s){}break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,U=0,F=1,j=2,E=true,S=false,W="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L,toStringIE:T});function x(){return e.createDocumentFragment()}function q(X,t){C(E,X,t)}function s(X,t){C(S,X,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[W]}else{O[h]=O[Q];O[W]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(aa,t){var ad=O[h],Y=O[W],ac=O[Q],X=O[A],ab=t.startContainer,af=t.startOffset,Z=t.endContainer,ae=t.endOffset;if(aa===0){return H(ad,Y,ab,af)}if(aa===1){return H(ac,X,ab,af)}if(aa===2){return H(ac,X,Z,ae)}if(aa===3){return H(ad,Y,Z,ae)}}function p(){l(j)}function I(){return l(U)}function d(){return l(F)}function D(aa){var X=this[h],t=this[W],Z,Y;if((X.nodeType===3||X.nodeType===4)&&X.nodeValue){if(!t){X.parentNode.insertBefore(aa,X)}else{if(t>=X.nodeValue.length){c.insertAfter(aa,X)}else{Z=X.splitText(t);X.parentNode.insertBefore(aa,Z)}}}else{if(X.childNodes.length>0){Y=X.childNodes[t]}if(Y){X.insertBefore(aa,Y)}else{X.appendChild(aa)}}}function N(X){var t=O.extractContents();O.insertNode(X);X.appendChild(t);O.selectNode(X)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[W],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,X){var Y;if(t.nodeType==3){return t}if(X<0){return t}Y=t.firstChild;while(Y&&X>0){--X;Y=Y.nextSibling}if(Y){return Y}return t}function m(){return(O[h]==O[Q]&&O[W]==O[A])}function H(Z,ab,X,aa){var ac,Y,t,ad,af,ae;if(Z==X){if(ab==aa){return 0}if(ab<aa){ret
|
|