SEO SQUIRRLY™ - Version 11.1.03

Version Description

Download this release

Release Info

Developer cifi
Plugin Icon 128x128 SEO SQUIRRLY™
Version 11.1.03
Comparing to
See all releases

Code changes from version 11.1.02 to 11.1.03

classes/helpers/Tools.php CHANGED
@@ -137,6 +137,7 @@ class SQ_Classes_Helpers_Tools {
137
  //minify Squirrly Metas
138
  'sq_load_css' => 1,
139
  'sq_minify' => 0,
 
140
 
141
  //Settings Assistant
142
  'sq_assistant' => 1,
@@ -682,7 +683,7 @@ class SQ_Classes_Helpers_Tools {
682
  'archive' => array(
683
  'protected' => 1,
684
  'sep' => '|',
685
- 'title' => '{{date}} {{page}} {{sep}} {{sitename}}',
686
  'description' => '{{excerpt}}',
687
  'noindex' => 0,
688
  'nofollow' => 0,
137
  //minify Squirrly Metas
138
  'sq_load_css' => 1,
139
  'sq_minify' => 0,
140
+ 'sq_non_utf8_support' => 1,
141
 
142
  //Settings Assistant
143
  'sq_assistant' => 1,
683
  'archive' => array(
684
  'protected' => 1,
685
  'sep' => '|',
686
+ 'title' => '{{plural}} {{date}} {{page}} {{sep}} {{sitename}}',
687
  'description' => '{{excerpt}}',
688
  'noindex' => 0,
689
  'nofollow' => 0,
controllers/Audits.php CHANGED
@@ -27,10 +27,10 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
27
  $this->checkin = SQ_Classes_RemoteController::checkin();
28
 
29
  if (is_wp_error($this->checkin)) {
30
- if($this->checkin->get_error_message() == 'no_data') {
31
  echo $this->getView('Errors/Error');
32
  return;
33
- }elseif($this->checkin->get_error_message() == 'maintenance') {
34
  echo $this->getView('Errors/Maintenance');
35
  return;
36
  }
@@ -43,11 +43,11 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
43
  }
44
 
45
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
46
- if(is_rtl()){
47
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
48
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
49
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
50
- }else{
51
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
52
  }
53
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
@@ -151,7 +151,7 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
151
  }
152
 
153
  public function audits() {
154
- add_action('sq_form_notices', array($this,'getNotificationBar'));
155
 
156
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('audits');
157
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('knob');
@@ -163,7 +163,7 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
163
  * Set the audit pages and populate them
164
  * @return mixed
165
  */
166
- public function setAuditPages(){
167
  $days_back = (int)SQ_Classes_Helpers_Tools::getValue('days_back', 30);
168
  $this->audit = SQ_Classes_RemoteController::getAudit(array('days_back' => $days_back));
169
 
@@ -243,8 +243,11 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
243
  $json['stats'] = $this->getView('Audits/AuditStats');
244
  $json['html'] = $this->getView('Audits/AuditPages');
245
 
246
- if (function_exists('iconv')) {
247
- $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
 
 
 
248
  }
249
 
250
  if (SQ_Classes_Helpers_Tools::isAjax()) {
@@ -302,16 +305,16 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
302
 
303
  $post_id = (int)SQ_Classes_Helpers_Tools::getValue('post_id', 0);
304
 
305
- if($post_id) {
306
  $args = array();
307
  $args['post_id'] = $post_id;
308
 
309
  if ($auditpage = SQ_Classes_RemoteController::updateAudit($args)) {
310
  if (!is_wp_error($auditpage)) {
311
  SQ_Classes_Error::setMessage(esc_html__("Audit page sent for recheck. It may take a while so please be patient.", _SQ_PLUGIN_NAME_) . " <br /> ");
312
- } elseif($auditpage->get_error_message() == 'too_many_attempts'){
313
  SQ_Classes_Error::setError(esc_html__("You've made too many requests, you can request one page audit per hour.", _SQ_PLUGIN_NAME_) . " <br /> ");
314
- }else{
315
  SQ_Classes_Error::setError(esc_html__("The page could not be sent for reaudit.", _SQ_PLUGIN_NAME_) . " <br /> ");
316
  }
317
  } else {
27
  $this->checkin = SQ_Classes_RemoteController::checkin();
28
 
29
  if (is_wp_error($this->checkin)) {
30
+ if ($this->checkin->get_error_message() == 'no_data') {
31
  echo $this->getView('Errors/Error');
32
  return;
33
+ } elseif ($this->checkin->get_error_message() == 'maintenance') {
34
  echo $this->getView('Errors/Maintenance');
35
  return;
36
  }
43
  }
44
 
45
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
46
+ if (is_rtl()) {
47
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
48
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
49
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
50
+ } else {
51
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
52
  }
53
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
151
  }
152
 
153
  public function audits() {
154
+ add_action('sq_form_notices', array($this, 'getNotificationBar'));
155
 
156
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('audits');
157
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('knob');
163
  * Set the audit pages and populate them
164
  * @return mixed
165
  */
166
+ public function setAuditPages() {
167
  $days_back = (int)SQ_Classes_Helpers_Tools::getValue('days_back', 30);
168
  $this->audit = SQ_Classes_RemoteController::getAudit(array('days_back' => $days_back));
169
 
243
  $json['stats'] = $this->getView('Audits/AuditStats');
244
  $json['html'] = $this->getView('Audits/AuditPages');
245
 
246
+ //Support for international languages
247
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
248
+ if (strpos(get_bloginfo("language"), 'en') === false) {
249
+ $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
250
+ }
251
  }
252
 
253
  if (SQ_Classes_Helpers_Tools::isAjax()) {
305
 
306
  $post_id = (int)SQ_Classes_Helpers_Tools::getValue('post_id', 0);
307
 
308
+ if ($post_id) {
309
  $args = array();
310
  $args['post_id'] = $post_id;
311
 
312
  if ($auditpage = SQ_Classes_RemoteController::updateAudit($args)) {
313
  if (!is_wp_error($auditpage)) {
314
  SQ_Classes_Error::setMessage(esc_html__("Audit page sent for recheck. It may take a while so please be patient.", _SQ_PLUGIN_NAME_) . " <br /> ");
315
+ } elseif ($auditpage->get_error_message() == 'too_many_attempts') {
316
  SQ_Classes_Error::setError(esc_html__("You've made too many requests, you can request one page audit per hour.", _SQ_PLUGIN_NAME_) . " <br /> ");
317
+ } else {
318
  SQ_Classes_Error::setError(esc_html__("The page could not be sent for reaudit.", _SQ_PLUGIN_NAME_) . " <br /> ");
319
  }
320
  } else {
controllers/CheckSeo.php CHANGED
@@ -257,15 +257,22 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
257
  * @return bool|int
258
  */
259
  public function getErrorsCount() {
 
 
 
260
  if (!isset($this->report)) {
261
  $this->report = $this->getNotifications();
262
  }
263
 
264
- if (!empty($this->report)) {
265
- return count((array)$this->report);
 
 
 
 
266
  }
267
 
268
- return false;
269
  }
270
 
271
  /**
@@ -352,8 +359,12 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
352
  }
353
 
354
  $json['html'] = $this->getView('Goals/Goals');
355
- if (function_exists('iconv')) {
356
- $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
 
 
 
 
357
  }
358
 
359
  if (SQ_Classes_Error::isError()) {
257
  * @return bool|int
258
  */
259
  public function getErrorsCount() {
260
+
261
+ $errors = 0;
262
+
263
  if (!isset($this->report)) {
264
  $this->report = $this->getNotifications();
265
  }
266
 
267
+ if(!empty($this->report)){
268
+ foreach ($this->report as $row){
269
+ if($row['active'] && !$row['positive'] && !$row['completed'] && !$row['done'] ){
270
+ $errors ++;
271
+ }
272
+ }
273
  }
274
 
275
+ return $errors;
276
  }
277
 
278
  /**
359
  }
360
 
361
  $json['html'] = $this->getView('Goals/Goals');
362
+
363
+ //Support for international languages
364
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
365
+ if (strpos(get_bloginfo("language"), 'en') === false) {
366
+ $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
367
+ }
368
  }
369
 
370
  if (SQ_Classes_Error::isError()) {
controllers/FocusPages.php CHANGED
@@ -291,8 +291,12 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
291
  $args = array();
292
  $args['post_id'] = $post_id;
293
  if ($json['html'] = SQ_Classes_RemoteController::getInspectURL($args)) {
294
- if (function_exists('iconv')) {
295
- $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
 
 
 
 
296
  }
297
  }
298
 
@@ -312,8 +316,11 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
312
 
313
  $json['html'] = $this->getView('FocusPages/FocusPages');
314
 
315
- if (function_exists('iconv')) {
316
- $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
 
 
 
317
  }
318
 
319
  if (SQ_Classes_Error::isError()) {
291
  $args = array();
292
  $args['post_id'] = $post_id;
293
  if ($json['html'] = SQ_Classes_RemoteController::getInspectURL($args)) {
294
+
295
+ //Support for international languages
296
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
297
+ if (strpos(get_bloginfo("language"), 'en') === false) {
298
+ $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
299
+ }
300
  }
301
  }
302
 
316
 
317
  $json['html'] = $this->getView('FocusPages/FocusPages');
318
 
319
+ //Support for international languages
320
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
321
+ if (strpos(get_bloginfo("language"), 'en') === false) {
322
+ $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
323
+ }
324
  }
325
 
326
  if (SQ_Classes_Error::isError()) {
controllers/Onboarding.php CHANGED
@@ -79,7 +79,6 @@ class SQ_Controllers_Onboarding extends SQ_Classes_FrontController {
79
  SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 0);
80
  }else{
81
  SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 1);
82
- SQ_Classes_Helpers_Tools::saveOptions('sq_auto_links', 1);
83
  }
84
  SQ_Classes_Helpers_Tools::saveOptions('sq_jsonld_type', ($sq_onboarding_data['website_type'] == 'personal' ? 'Person' : 'Organization'));
85
  }
79
  SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 0);
80
  }else{
81
  SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 1);
 
82
  }
83
  SQ_Classes_Helpers_Tools::saveOptions('sq_jsonld_type', ($sq_onboarding_data['website_type'] == 'personal' ? 'Person' : 'Organization'));
84
  }
controllers/Overview.php CHANGED
@@ -39,7 +39,6 @@ class SQ_Controllers_Overview extends SQ_Classes_FrontController {
39
  add_action('sq_form_notices', array($this, 'getNotificationBar'));
40
  add_action('sq_form_notices', array($this, 'getNotificationCompatibility'));
41
 
42
- //@ob_flush();
43
  parent::init();
44
 
45
  }
39
  add_action('sq_form_notices', array($this, 'getNotificationBar'));
40
  add_action('sq_form_notices', array($this, 'getNotificationCompatibility'));
41
 
 
42
  parent::init();
43
 
44
  }
controllers/Patterns.php CHANGED
@@ -67,10 +67,6 @@ class SQ_Controllers_Patterns extends SQ_Classes_FrontController {
67
  if (!empty($values)) {
68
  foreach ($values as $name => $value) {
69
  if ($name <> '' && !is_array($value) && $value <> '') {
70
- // if (strpos($value, '#') !== false) { //in case there are still patterns from AIOS
71
- // $value = preg_replace('/#([a-z_]+)/s', '{{$1}}', $value);
72
- // $object->$name = preg_replace('/#([a-z_]+)/s', '{{$1}}', $object->$name);
73
- // }
74
 
75
  if (strpos($value, '%%') !== false) { //in case there are still patterns from Yoast
76
  $value = preg_replace('/%%([^\%]+)%%/s', '{{$1}}', $value);
67
  if (!empty($values)) {
68
  foreach ($values as $name => $value) {
69
  if ($name <> '' && !is_array($value) && $value <> '') {
 
 
 
 
70
 
71
  if (strpos($value, '%%') !== false) { //in case there are still patterns from Yoast
72
  $value = preg_replace('/%%([^\%]+)%%/s', '{{$1}}', $value);
controllers/Post.php CHANGED
@@ -269,14 +269,6 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
269
  get_post_status($post->ID) <> 'inherit'
270
  ) {
271
 
272
- //Exclude types for SLA
273
- if (isset($post->post_type) && $post->post_type <> '') {
274
- $excludes = SQ_Classes_Helpers_Tools::getOption('sq_sla_exclude_post_types');
275
- if (in_array($post->post_type, $excludes)) {
276
- return;
277
- }
278
- }
279
-
280
  //Update the SEO Keywords from Live Assistant and Permalink
281
  add_filter('sq_seo_before_save', array($this, 'addSeoKeywords'), 11, 1);
282
  //Update the redirect to old slugs
@@ -285,6 +277,14 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
285
  //Save the SEO
286
  SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->saveSEO($post->ID);
287
 
 
 
 
 
 
 
 
 
288
  //Send the optimization when attachment page
289
  $this->sendSeo($post);
290
  }
269
  get_post_status($post->ID) <> 'inherit'
270
  ) {
271
 
 
 
 
 
 
 
 
 
272
  //Update the SEO Keywords from Live Assistant and Permalink
273
  add_filter('sq_seo_before_save', array($this, 'addSeoKeywords'), 11, 1);
274
  //Update the redirect to old slugs
277
  //Save the SEO
278
  SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->saveSEO($post->ID);
279
 
280
+ //Exclude types for SLA
281
+ if (isset($post->post_type) && $post->post_type <> '') {
282
+ $excludes = SQ_Classes_Helpers_Tools::getOption('sq_sla_exclude_post_types');
283
+ if (in_array($post->post_type, $excludes)) {
284
+ return;
285
+ }
286
+ }
287
+
288
  //Send the optimization when attachment page
289
  $this->sendSeo($post);
290
  }
controllers/Snippet.php CHANGED
@@ -17,7 +17,7 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
17
  $taxonomies = get_taxonomies(array('public' => true));
18
  if (!empty($taxonomies)) {
19
  foreach ($taxonomies as $taxonomy) {
20
- if(is_string($taxonomy) && $taxonomy <> '') {
21
  add_filter($taxonomy . '_edit_form', array($this, 'hookTermsPage'), 10);
22
  }
23
  }
@@ -216,8 +216,11 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
216
  if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
217
  $json['html'] = $this->getView('Blocks/Snippet');
218
 
219
- if (function_exists('iconv')) {
220
- $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
 
 
 
221
  }
222
 
223
  if (SQ_Classes_Error::isError()) {
17
  $taxonomies = get_taxonomies(array('public' => true));
18
  if (!empty($taxonomies)) {
19
  foreach ($taxonomies as $taxonomy) {
20
+ if (is_string($taxonomy) && $taxonomy <> '') {
21
  add_filter($taxonomy . '_edit_form', array($this, 'hookTermsPage'), 10);
22
  }
23
  }
216
  if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
217
  $json['html'] = $this->getView('Blocks/Snippet');
218
 
219
+ //Support for international languages
220
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
221
+ if (strpos(get_bloginfo("language"), 'en') === false) {
222
+ $json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
223
+ }
224
  }
225
 
226
  if (SQ_Classes_Error::isError()) {
models/Compatibility.php CHANGED
@@ -50,7 +50,10 @@ class SQ_Models_Compatibility {
50
  add_action('template_redirect', array(SQ_Classes_ObjController::getClass('SQ_Models_Frontend'), 'setPost'), 10);
51
  }
52
 
53
-
 
 
 
54
  }
55
 
56
  /**
@@ -61,6 +64,7 @@ class SQ_Models_Compatibility {
61
  public function isBuilderEditor() {
62
 
63
  if (function_exists('is_user_logged_in') && is_user_logged_in()) {
 
64
  if (SQ_Classes_Helpers_Tools::isPluginInstalled('oxygen/functions.php')) {
65
  if (SQ_Classes_Helpers_Tools::getValue('ct_builder', false) || SQ_Classes_Helpers_Tools::getValue('ct_template', false)) {
66
  return true;
@@ -71,6 +75,22 @@ class SQ_Models_Compatibility {
71
  return true;
72
  }
73
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
 
76
  return false;
50
  add_action('template_redirect', array(SQ_Classes_ObjController::getClass('SQ_Models_Frontend'), 'setPost'), 10);
51
  }
52
 
53
+ //Compatibility with Weglot Plugin
54
+ if (SQ_Classes_Helpers_Tools::isPluginInstalled('weglot/weglot.php')) {
55
+ add_filter('sq_lateloading', '__return_true');
56
+ }
57
  }
58
 
59
  /**
64
  public function isBuilderEditor() {
65
 
66
  if (function_exists('is_user_logged_in') && is_user_logged_in()) {
67
+
68
  if (SQ_Classes_Helpers_Tools::isPluginInstalled('oxygen/functions.php')) {
69
  if (SQ_Classes_Helpers_Tools::getValue('ct_builder', false) || SQ_Classes_Helpers_Tools::getValue('ct_template', false)) {
70
  return true;
75
  return true;
76
  }
77
  }
78
+
79
+ $builder_paramas = array(
80
+ 'vcv-action',
81
+ 'et_fb',
82
+ 'ct_builder',
83
+ 'ct_template',
84
+ 'tve',
85
+ 'uxb_iframe',
86
+ );
87
+
88
+ foreach ($builder_paramas as $param) {
89
+ if (SQ_Classes_Helpers_Tools::getValue($param, false)) {
90
+ return true;
91
+ }
92
+ }
93
+
94
  }
95
 
96
  return false;
models/Frontend.php CHANGED
@@ -348,10 +348,20 @@ class SQ_Models_Frontend {
348
 
349
  if (get_option('page_for_posts') > 0) {
350
  $posts_url = get_permalink(get_option('page_for_posts'));
 
 
 
 
 
 
 
 
351
  if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
352
  $current_post = get_post(get_option('page_for_posts'));
353
  }
 
354
  } elseif (get_option('page_on_front') > 0) {
 
355
  $posts_url = get_permalink(get_option('page_on_front'));
356
  if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
357
  $current_post = get_post(get_option('page_on_front'));
@@ -370,6 +380,7 @@ class SQ_Models_Frontend {
370
  public function getPostDetails($post) {
371
 
372
  if ($post instanceof WP_Post) {
 
373
  /** @var SQ_Models_Domain_Post $post */
374
  $post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post', $post);
375
 
348
 
349
  if (get_option('page_for_posts') > 0) {
350
  $posts_url = get_permalink(get_option('page_for_posts'));
351
+
352
+ if (is_paged() && $posts_url <> '') {
353
+ $page = (int)get_query_var('paged');
354
+ if ($page && $page > 1) {
355
+ $posts_url = trailingslashit($posts_url) . "page/" . "$page/";
356
+ }
357
+ }
358
+
359
  if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
360
  $current_post = get_post(get_option('page_for_posts'));
361
  }
362
+
363
  } elseif (get_option('page_on_front') > 0) {
364
+
365
  $posts_url = get_permalink(get_option('page_on_front'));
366
  if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
367
  $current_post = get_post(get_option('page_on_front'));
380
  public function getPostDetails($post) {
381
 
382
  if ($post instanceof WP_Post) {
383
+
384
  /** @var SQ_Models_Domain_Post $post */
385
  $post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post', $post);
386
 
models/ImportExport.php CHANGED
@@ -606,9 +606,14 @@ class SQ_Models_ImportExport {
606
  if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
607
  if ($encoding = mb_detect_encoding($value)) {
608
  if ($encoding <> 'UTF-8') {
609
- if (function_exists('iconv')) {
610
- $value = iconv($encoding, 'UTF-8', $value);
 
 
 
 
611
  }
 
612
  if (strpos($value, '%%') !== false) {
613
  $value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
614
  }
@@ -659,9 +664,14 @@ class SQ_Models_ImportExport {
659
  if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
660
  if ($encoding = mb_detect_encoding($value)) {
661
  if ($encoding <> 'UTF-8') {
662
- if (function_exists('iconv')) {
663
- $value = iconv($encoding, 'UTF-8', $value);
 
 
 
 
664
  }
 
665
  if (strpos($value, '%%') !== false) {
666
  $value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
667
  }
606
  if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
607
  if ($encoding = mb_detect_encoding($value)) {
608
  if ($encoding <> 'UTF-8') {
609
+
610
+ //support for international languages
611
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
612
+ if (strpos(get_bloginfo("language"), 'en') === false) {
613
+ $value = iconv($encoding, 'UTF-8', $value);
614
+ }
615
  }
616
+
617
  if (strpos($value, '%%') !== false) {
618
  $value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
619
  }
664
  if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
665
  if ($encoding = mb_detect_encoding($value)) {
666
  if ($encoding <> 'UTF-8') {
667
+
668
+ //support for international languages
669
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
670
+ if (strpos(get_bloginfo("language"), 'en') === false) {
671
+ $value = iconv($encoding, 'UTF-8', $value);
672
+ }
673
  }
674
+
675
  if (strpos($value, '%%') !== false) {
676
  $value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
677
  }
models/abstract/Seo.php CHANGED
@@ -196,7 +196,7 @@ abstract class SQ_Models_Abstract_Seo {
196
  if ($_sq_video = get_post_meta($this->_post->ID, '_sq_video', true)) {
197
 
198
  //get the image from the youtube video
199
- preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'>\s]+)/si', $_sq_video, $match);
200
  if (isset($match[1]) && $match[1] <> '') {
201
  $thumbnail = 'https://img.youtube.com/vi/' . $match[1] . '/hqdefault.jpg';
202
  }
@@ -214,7 +214,7 @@ abstract class SQ_Models_Abstract_Seo {
214
 
215
  if (isset($this->_post->post_content)) {
216
 
217
- preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed)\/)([^\?&\"\'>\s]+)/si', $this->_post->post_content, $match);
218
 
219
  if (isset($match[0])) {
220
  if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
@@ -229,7 +229,7 @@ abstract class SQ_Models_Abstract_Seo {
229
  //return first video found
230
  if (!$all && !empty($videos)) return $videos;
231
 
232
- preg_match_all('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'>\s]+)/si', $this->_post->post_content, $matches, PREG_SET_ORDER );
233
 
234
  if(!empty($matches)){
235
  foreach ($matches as $match){
@@ -255,7 +255,7 @@ abstract class SQ_Models_Abstract_Seo {
255
  //return first video found
256
  if (!$all && !empty($videos)) return $videos;
257
 
258
- preg_match('/(?:http(?:s)?:\/\/)?(?:fwd4\.wistia\.com\/(?:medias)\/)([^\?&\"\'>\s]+)/si', $this->_post->post_content, $match);
259
 
260
  if (isset($match[0])) {
261
  $videos[] = array(
@@ -267,7 +267,7 @@ abstract class SQ_Models_Abstract_Seo {
267
  //return first video found
268
  if (!$all && !empty($videos)) return $videos;
269
 
270
- preg_match('/class=["|\']([^"\']*wistia_async_([^\?&\"\'>\s]+)[^"\']*["|\'])/si', $this->_post->post_content, $match);
271
 
272
  if (isset($match[0])) {
273
  $videos[] = array(
196
  if ($_sq_video = get_post_meta($this->_post->ID, '_sq_video', true)) {
197
 
198
  //get the image from the youtube video
199
+ preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'<>\s]+)/si', $_sq_video, $match);
200
  if (isset($match[1]) && $match[1] <> '') {
201
  $thumbnail = 'https://img.youtube.com/vi/' . $match[1] . '/hqdefault.jpg';
202
  }
214
 
215
  if (isset($this->_post->post_content)) {
216
 
217
+ preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed)\/)([^\?&\"\'<>\s]+)/si', $this->_post->post_content, $match);
218
 
219
  if (isset($match[0])) {
220
  if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
229
  //return first video found
230
  if (!$all && !empty($videos)) return $videos;
231
 
232
+ preg_match_all('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'\<>\s]+)/si', $this->_post->post_content, $matches, PREG_SET_ORDER );
233
 
234
  if(!empty($matches)){
235
  foreach ($matches as $match){
255
  //return first video found
256
  if (!$all && !empty($videos)) return $videos;
257
 
258
+ preg_match('/(?:http(?:s)?:\/\/)?(?:fwd4\.wistia\.com\/(?:medias)\/)([^\?&\"\'<>\s]+)/si', $this->_post->post_content, $match);
259
 
260
  if (isset($match[0])) {
261
  $videos[] = array(
267
  //return first video found
268
  if (!$all && !empty($videos)) return $videos;
269
 
270
+ preg_match('/class=["|\']([^"\']*wistia_async_([^\?&\"\'<>\s]+)[^"\']*["|\'])/si', $this->_post->post_content, $match);
271
 
272
  if (isset($match[0])) {
273
  $videos[] = array(
models/domain/Post.php CHANGED
@@ -79,6 +79,11 @@ class SQ_Models_Domain_Post extends SQ_Models_Abstract_Domain {
79
  if (isset($patterns[$this->_post_type][$key])) {
80
  $this->_sq->$key = $patterns[$this->_post_type][$key];
81
  }
 
 
 
 
 
82
  } else {
83
  //get the default automation
84
  if (isset($patterns['custom'][$key])) {
79
  if (isset($patterns[$this->_post_type][$key])) {
80
  $this->_sq->$key = $patterns[$this->_post_type][$key];
81
  }
82
+ } elseif (strpos($this->_post_type, 'archive-') !== false) {
83
+ //get the archive automation for custom archive types
84
+ if (isset($patterns['archive'][$key])) {
85
+ $this->_sq->$key = $patterns['archive'][$key];
86
+ }
87
  } else {
88
  //get the default automation
89
  if (isset($patterns['custom'][$key])) {
models/services/JsonLD.php CHANGED
@@ -306,7 +306,6 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
306
  // Generate structured data for Woocommerce 3+.
307
  if ($this->_post->post_type == 'product' || in_array('product', $this->_post->sq->jsonld_types)) {
308
  $this->_markups[] = $this->getWoocommerceProductMarkup();
309
-
310
  }
311
  }
312
  }
@@ -1192,8 +1191,8 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
1192
  //By default, set the price available for 1 year
1193
  $price_valid_until = date('Y-m-d', strtotime('+12 Month'));
1194
  if (method_exists($product, 'get_date_on_sale_to') && method_exists($product, 'get_date_on_sale_from')) {
1195
- if (method_exists($product->get_date_on_sale_from(), 'getTimestamp')) {
1196
- if (date('Y-m-d', $product->get_date_on_sale_from()->getTimestamp()) <= gmdate('Y-m-d')) {
1197
  if (method_exists($product->get_date_on_sale_to(), 'getTimestamp')) {
1198
  //Set the price available until the offer ends
1199
  $price_valid_until = date('Y-m-d', $product->get_date_on_sale_to()->getTimestamp());
@@ -1224,12 +1223,14 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
1224
  if ($product->is_type('variable') && method_exists($product, 'get_variation_prices')) {
1225
  $prices = $product->get_variation_prices();
1226
 
1227
- $markup_offer['priceSpecification'] = array(
1228
- 'price' => wc_format_decimal($product->get_price(), wc_get_price_decimals()),
1229
- 'minPrice' => wc_format_decimal(current($prices['price']), wc_get_price_decimals()),
1230
- 'maxPrice' => wc_format_decimal(end($prices['price']), wc_get_price_decimals()),
1231
- 'priceCurrency' => $currency,
1232
- );
 
 
1233
  }
1234
 
1235
  $markup['sku'] = (method_exists($product, 'get_sku')) ? ($product->get_sku() <> '' ? $product->get_sku() : '') : '';
@@ -1323,7 +1324,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
1323
  'name' => '',
1324
  ),
1325
  'reviewBody' => '',
1326
- 'datePublished' => (method_exists($product, 'get_date_created') && method_exists($product->get_date_created(), 'getTimestamp')) ? date('Y-m-d', $product->get_date_created()->getTimestamp()) : '',
1327
  );
1328
  }
1329
  }
306
  // Generate structured data for Woocommerce 3+.
307
  if ($this->_post->post_type == 'product' || in_array('product', $this->_post->sq->jsonld_types)) {
308
  $this->_markups[] = $this->getWoocommerceProductMarkup();
 
309
  }
310
  }
311
  }
1191
  //By default, set the price available for 1 year
1192
  $price_valid_until = date('Y-m-d', strtotime('+12 Month'));
1193
  if (method_exists($product, 'get_date_on_sale_to') && method_exists($product, 'get_date_on_sale_from')) {
1194
+ if ($product->get_date_on_sale_from() && method_exists($product->get_date_on_sale_from(), 'getTimestamp')) {
1195
+ if ($product->get_date_on_sale_from() && date('Y-m-d', $product->get_date_on_sale_from()->getTimestamp()) <= gmdate('Y-m-d')) {
1196
  if (method_exists($product->get_date_on_sale_to(), 'getTimestamp')) {
1197
  //Set the price available until the offer ends
1198
  $price_valid_until = date('Y-m-d', $product->get_date_on_sale_to()->getTimestamp());
1223
  if ($product->is_type('variable') && method_exists($product, 'get_variation_prices')) {
1224
  $prices = $product->get_variation_prices();
1225
 
1226
+ if (isset($prices['price'])) {
1227
+ $markup_offer['priceSpecification'] = array(
1228
+ 'price' => wc_format_decimal($product->get_price(), wc_get_price_decimals()),
1229
+ 'minPrice' => wc_format_decimal(current($prices['price']), wc_get_price_decimals()),
1230
+ 'maxPrice' => wc_format_decimal(end($prices['price']), wc_get_price_decimals()),
1231
+ 'priceCurrency' => $currency,
1232
+ );
1233
+ }
1234
  }
1235
 
1236
  $markup['sku'] = (method_exists($product, 'get_sku')) ? ($product->get_sku() <> '' ? $product->get_sku() : '') : '';
1324
  'name' => '',
1325
  ),
1326
  'reviewBody' => '',
1327
+ 'datePublished' => (method_exists($product, 'get_date_created') && $product->get_date_created() && method_exists($product->get_date_created(), 'getTimestamp')) ? date('Y-m-d', $product->get_date_created()->getTimestamp()) : '',
1328
  );
1329
  }
1330
  }
readme.txt CHANGED
@@ -400,6 +400,15 @@ Type a keyword to the right of the screen and start using Squirrly Seo. Enjoy!
400
  9. Squirrly SEO - Progress & Achievements
401
 
402
  == Changelog ==
 
 
 
 
 
 
 
 
 
403
  = 11.1.02- 04/30/2021 =
404
  Update - Add the option to import the SEO Snippets from SEO Press (Patterns, SEO METAs, Open Graph, Twitter Card, 301 Redirects, Noindex)
405
  Update - Add the option to import the Settings from SEO Press (Social Media, JSON-LD, Webmasters)
400
  9. Squirrly SEO - Progress & Achievements
401
 
402
  == Changelog ==
403
+ = 11.1.03- 05/06/2021 =
404
+ Update - Do not track the traffic for Squirrly crawlers
405
+ Update - Add in Dev Kit the options to hide the Research, All Snippets, Live Assistant menu items
406
+ Update - Integrate Focus Pages with the SEO Links domain exception in the Outbound nofollow links report
407
+ Update - Compatibility between Live Assistant & Thrive Architect
408
+ Fix - Add a patch for the Oxygen builder to not show 500 error when editing the templates
409
+ Fix - Web Dev Kit to work with the Wp Mutisite for the custom plugin name
410
+ Fix - Fixed JSON-LD compatibility with the lastest version of WooCommerce
411
+
412
  = 11.1.02- 04/30/2021 =
413
  Update - Add the option to import the SEO Snippets from SEO Press (Patterns, SEO METAs, Open Graph, Twitter Card, 301 Redirects, Noindex)
414
  Update - Add the option to import the Settings from SEO Press (Social Media, JSON-LD, Webmasters)
squirrly.php CHANGED
@@ -8,7 +8,7 @@
8
  * Description: A.I.-based Private SEO Consultant. In a Plugin. Powered by Machine Learning and Cloud Services. Over 300 functionalities for SEO available when you need them.
9
  * Author: Squirrly SEO
10
  * Author URI: https://plugin.squirrly.co
11
- * Version: 11.1.02
12
  * License: GPLv2 or later
13
  * License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
14
  * Text Domain: squirrly-seo
@@ -17,7 +17,7 @@
17
 
18
  if (!defined('SQ_VERSION')) {
19
  /* SET THE CURRENT VERSION ABOVE AND BELOW */
20
- define('SQ_VERSION', '11.1.02');
21
  //The last stable version
22
  define('SQ_STABLE_VERSION', '11.1.00');
23
  // Call config files
8
  * Description: A.I.-based Private SEO Consultant. In a Plugin. Powered by Machine Learning and Cloud Services. Over 300 functionalities for SEO available when you need them.
9
  * Author: Squirrly SEO
10
  * Author URI: https://plugin.squirrly.co
11
+ * Version: 11.1.03
12
  * License: GPLv2 or later
13
  * License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
14
  * Text Domain: squirrly-seo
17
 
18
  if (!defined('SQ_VERSION')) {
19
  /* SET THE CURRENT VERSION ABOVE AND BELOW */
20
+ define('SQ_VERSION', '11.1.03');
21
  //The last stable version
22
  define('SQ_STABLE_VERSION', '11.1.00');
23
  // Call config files
view/Audits/Audits.php CHANGED
@@ -58,8 +58,12 @@
58
  <div class="sq_auditpages_content">
59
  <?php
60
  $content = $view->getView('Audits/AuditPages');
61
- if (function_exists('iconv')) {
62
- $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
 
 
 
 
63
  }
64
  echo (string)$content;
65
  ?>
58
  <div class="sq_auditpages_content">
59
  <?php
60
  $content = $view->getView('Audits/AuditPages');
61
+
62
+ //support for international languages
63
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
64
+ if (strpos(get_bloginfo("language"), 'en') === false) {
65
+ $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
66
+ }
67
  }
68
  echo (string)$content;
69
  ?>
view/Blocks/Snippet.php CHANGED
@@ -356,7 +356,11 @@ if (SQ_Classes_Helpers_Tools::getOption('sq_use')) {
356
  <?php echo esc_html__("OG", _SQ_PLUGIN_NAME_) ?>:
357
  <?php echo (string)$view->post->sq->og_type ?> |
358
  <?php echo esc_html__("JSON-LD", _SQ_PLUGIN_NAME_) ?>:
359
- <?php echo (string)join(',',$view->post->sq->jsonld_types) ?>
 
 
 
 
360
  </div>
361
  </div>
362
  </div>
356
  <?php echo esc_html__("OG", _SQ_PLUGIN_NAME_) ?>:
357
  <?php echo (string)$view->post->sq->og_type ?> |
358
  <?php echo esc_html__("JSON-LD", _SQ_PLUGIN_NAME_) ?>:
359
+ <?php
360
+ if(isset($view->post->sq->jsonld_types) && !empty($view->post->sq->jsonld_types)) {
361
+ echo (string)join(',', $view->post->sq->jsonld_types);
362
+ }
363
+ ?>
364
  </div>
365
  </div>
366
  </div>
view/FocusPages/Pagelist.php CHANGED
@@ -52,9 +52,14 @@
52
  <div class="sq_focuspages_content" style="min-height: 150px">
53
  <?php
54
  $content = $view->getView('FocusPages/FocusPages');
55
- if (function_exists('iconv')) {
56
- $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
 
 
 
 
57
  }
 
58
  echo (string)$content;
59
  ?>
60
  </div>
52
  <div class="sq_focuspages_content" style="min-height: 150px">
53
  <?php
54
  $content = $view->getView('FocusPages/FocusPages');
55
+
56
+ //support for international languages
57
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
58
+ if (strpos(get_bloginfo("language"), 'en') === false) {
59
+ $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
60
+ }
61
  }
62
+
63
  echo (string)$content;
64
  ?>
65
  </div>
view/Goals/CheckSeo.php CHANGED
@@ -104,9 +104,14 @@ $category_name = apply_filters('sq_page', SQ_Classes_Helpers_Tools::getValue('pa
104
  <?php
105
  $view->report = $view->getNotifications();
106
  $content = $view->getView('Goals/Goals');
107
- if (function_exists('iconv')) {
108
- $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
 
 
 
 
109
  }
 
110
  echo (string)$content;
111
  ?>
112
  </div>
104
  <?php
105
  $view->report = $view->getNotifications();
106
  $content = $view->getView('Goals/Goals');
107
+
108
+ //support for international languages
109
+ if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
110
+ if (strpos(get_bloginfo("language"), 'en') === false) {
111
+ $content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
112
+ }
113
  }
114
+
115
  echo (string)$content;
116
  ?>
117
  </div>
view/SeoSettings/Advanced.php CHANGED
@@ -78,6 +78,21 @@
78
  </div>
79
  </div>
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  <div class="sq_separator my-3"></div>
82
 
83
  <div class="col-12 row mb-1 ml-1">
78
  </div>
79
  </div>
80
 
81
+ <?php if (strpos(get_bloginfo("language"), 'en') === false) { ?>
82
+ <div class="col-12 row mb-1 ml-1">
83
+ <div class="checker col-12 row my-2 py-1">
84
+ <div class="col-12 p-0 sq-switch sq-switch-sm">
85
+ <input type="hidden" name="sq_non_utf8_support" value="0"/>
86
+ <input type="checkbox" id="sq_non_utf8_support" name="sq_non_utf8_support" class="sq-switch" <?php echo(SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support') ? 'checked="checked"' : '') ?> value="1"/>
87
+ <label for="sq_non_utf8_support" class="ml-2"><?php echo esc_html__("Multilingual Support", _SQ_PLUGIN_NAME_); ?>
88
+ <a href="https://howto.squirrly.co/kb/advanced-seo-settings/#late_loading_buffer" target="_blank"><i class="fa fa-question-circle m-0 px-2" style="display: inline;"></i></a>
89
+ </label>
90
+ <div class="offset-1 small text-black-50"><?php echo esc_html__("Convert the other encodings to UTF8 and avoid ajax errors.", _SQ_PLUGIN_NAME_); ?></div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <?php } ?>
95
+
96
  <div class="sq_separator my-3"></div>
97
 
98
  <div class="col-12 row mb-1 ml-1">
view/assets/css/post.min.css CHANGED
@@ -1 +1 @@
1
- @import url(https://fonts.googleapis.com/css?family=Open+Sans);@-webkit-keyframes play{0%{background-position:0}to{background-position:-400px}}@-moz-keyframes play{0%{background-position:0}to{background-position:-400px}}@-ms-keyframes play{0%{background-position:0}to{background-position:-400px}}@-o-keyframes play{0%{background-position:0}to{background-position:-400px}}@keyframes play{0%{background-position:0}to{background-position:-400px}}.sq_loading{height:60px;background:url(../img/loading.gif) no-repeat center!important}.sq_minloading:after,.sq_minloading:before{position:absolute!important;right:calc(50% - 10px)!important;top:calc(50% - 8px)!important;display:block!important;float:right!important;line-height:30px!important;content:""!important;padding:0!important;margin:0 0 0 5px!important;height:16px!important;width:20px!important;background:url(../img/minloading.png) no-repeat!important;-webkit-animation:play 1s steps(10) infinite;-moz-animation:play 1s steps(10) infinite;-o-animation:play 1s steps(10) infinite;animation:play 1s steps(10) infinite}#sq_preloading{text-align:center;font-size:15px;line-height:24px;color:gray}.sq_sla_connect_notice{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}.sq_push,.sq_sla_connect_notice_content{text-align:center;margin:6px auto}.sq_sla_connect_notice a{text-decoration:none}.sq_sla_connect_notice_content a img{width:277px}#postsquirrly{background:0 0;border:0;margin:0;padding:2px;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#postsquirrly .postbox-header{display:none}#postsquirrly *,#sq_blocksnippet *{box-sizing:border-box}#postsquirrly.closed .inside{display:block}.sq_push{position:absolute;top:-7px;left:30px;font-size:10px;margin:0;border:1px solid #333;background-color:#8b0000;border-radius:50px;-webkit-border-radius:50px;-moz-border-radius:50px;padding:0 1px;width:14px;text-shadow:1px 1px #333;color:#fff;font-family:'Megalopolis',Arial,Helvetica,sans-serif}#sq_options_dasboard .sq_push{left:36px}#postsquirrly div.inside,#postsquirrly p,#postsquirrly td,#sq_blocksearch ul,#sq_blockseo ul,#sq_options>ul{margin:0;padding:0}.edit-post-sidebar #sq_options{display:none}#postsquirrly .handlediv,#postsquirrly .hndle{background:gray;opacity:0;height:1px;line-height:0}#postsquirrly .sq_header{color:#a0a0a0;font-size:14px;font-weight:400;padding:5px 7px;margin:0;line-height:20px;border-bottom:1px dashed #d1d1d1}#postsquirrly .sq_box{background-color:#fff;margin-bottom:15px;border:1px solid #ccd0d4}#normal-sortables #postsquirrly .sq_box{max-width:490px;margin:auto}#postsquirrly.sq_sticky{position:fixed!important;z-index:90000!important;right:3px;bottom:0;top:auto;height:136px;width:285px!important;padding:1px!important;background:#fff!important;overflow-x:auto!important;box-shadow:0 0 10px 0 #555!important}#postsquirrly.sq_sticky::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar{width:7px;background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar-thumb{background-color:#bdafba;border:0}#postsquirrly.sq_sticky .hndle,#postsquirrly.sq_sticky.minimized #sq_briefcase_list,#postsquirrly.sq_sticky.minimized #sq_briefcase_topcontent{display:none!important}#postsquirrly.sq_sticky .sq_header{cursor:move}#postsquirrly .sq_box_close,#postsquirrly .sq_box_maximize,#postsquirrly .sq_box_minimize{display:block;float:right;margin:0;cursor:pointer;font-family:Arial,sans-serif;font-weight:400;font-size:17px;color:gray;padding:0 0 0 10px;height:22px}#postsquirrly.sq_sticky.minimized{height:95px!important;overflow:hidden!important}#postsquirrly .inside{position:relative;height:100%}#postsquirrly .sq_box.sq_sticky{position:fixed;top:32px;z-index:99999;height:100%;max-width:291px;overflow-x:auto}#postsquirrly.sq_sticky .sq_box.sq_sticky{position:absolute;top:0;bottom:0;height:100%;margin:0}#postsquirrly .sq_box.sq_sticky>div{margin-bottom:25px}#postsquirrly .sq_box:hover:before{opacity:.8}#postsquirrly .sq_box:hover .sq_header{color:#444}#sq_blocklogin{background-color:#ffffe0}#sq_blocklogin input,#sq_blocklogin textarea{font-family:Arial,Helvetica,sans-serif;font-size:14px;height:30px;padding:6px}#postsquirrly .sq_button,#sq_blocklogin #sq_login{cursor:pointer;background-color:#589ee4;color:#fff;border:0}#postsquirrly .sq_button{display:block;text-decoration:none;line-height:30px;font-weight:700;margin:0;padding:0 15px;border-radius:0;vertical-align:top}#sq_blocklogin #sq_login{min-width:100px;min-height:35px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px}#sq_blocklogin label{margin-top:0;margin-right:2px;width:72px;display:inline-block}#sq_blocklogin ul li{position:relative;font-family:"Lucida Grande",Arial,Helvetica,sans-serif;font-size:12px;padding:4px 0 4px 5px;margin:5px 0;line-height:16px;text-shadow:1px 1px #fff;text-align:center}#postsquirrly .sq_button,#sq_blocklogin .sq_info{font-size:13px;text-align:center}#sq_blocklogin .sq_error{font-size:12px;text-align:center;color:red;margin:5px auto}#sq_blocklogin #sq_register{margin:5px 0;font-size:16px;font-weight:700}#sq_blocklogin #sq_register_wait{display:inline-block;margin-left:2px}#sq_blocklogin #sq_autologin{padding:20px 10px 5px}#sq_blocklogin #sq_autologin #sq_loginimage{display:block;background-color:#589ee4;height:auto;width:100px;font-size:15px;color:#fff;font-weight:700;margin:13px;padding:10px 0;text-decoration:none;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;cursor:pointer}#sq_blocklogin #sq_register_email{text-align:center;width:250px;height:45px;margin:14px auto 11px}#sq_blocklogin #sq_register_email #sq_email{width:160px!important;border:2px solid #589ee4}#sq_blocklogin #sq_signin{color:#11a5c1;margin:5px;cursor:pointer}#sq_options,#sq_options>ul>li{position:relative;float:right;padding:0}#sq_options{height:40px;margin:0;z-index:13}#side-sortables #sq_options{z-index:1003}#postsquirrly #sq_options{float:none;background:0 0;border:0;box-shadow:none}#normal-sortables #postsquirrly #sq_options{display:flex;width:280px;margin:10px auto}#sq_options>ul>li{font-family:"Open Sans",Arial,sans-serif!important;width:102px;color:#444;font-size:14px;margin:0 auto;cursor:pointer}#sq_options li#sq_options_support{margin-left:11px;width:105px}#sq_options_dasboard .sq_text a,#sq_options_support .sq_text{display:block;float:left;font-family:"Open Sans",Arial,sans-serif!important;font-size:12px;color:#333;text-decoration:none;padding:3px 5px;border:1px solid #ccc;border-radius:5px;background:#fff;background:-moz-linear-gradient(top,#fff,#f5f5f5);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f5f5f5))}#sq_options .sq_icon{display:block;float:left;background:url(../img/sprite.png) no-repeat;margin:-8px 5px 0 3px}#sq_options>ul>li#sq_options_feedback{width:38px;margin-left:2px}#sq_options_feedback .sq_label_feedback_smiley{display:block;height:37px;width:37px;margin:5px auto;background:url(../img/sprite.png) no-repeat;border:0;cursor:pointer}#sq_options_feedback .sq_feedback_smiley{display:none}#sq_options_feedback .sq_label_feedback_0{background-position:-102px -154px!important}#sq_options_feedback .sq_label_feedback_1{background-position:-148px -154px!important}#sq_options_feedback .sq_label_feedback_2{background-position:-194px -154px!important}#sq_options_feedback .sq_label_feedback_3{background-position:-240px -154px!important}#sq_options_feedback .sq_label_feedback_4{background-position:-284px -154px!important}#sq_options_feedback .sq_icon{height:37px;width:35px;background-position:-194px -154px}#sq_options_support .sq_icon{height:37px;width:30px;background-position:-5px -154px}#sq_options_dasboard .sq_icon{height:39px;width:40px;background-position:-40px -154px}#sq_options_feedback .sq_options_feedback_popup,#sq_options_support .sq_options_support_popup{display:table;min-width:345px;position:absolute;z-index:12;background-color:#fff;padding:5px;margin-top:0;top:33px;border:1px solid #ccc;border-radius:0 7px 7px 7px;-moz-border-radius:0 7px 7px 7px;-webkit-border-radius:0 7px 7px 7px;box-shadow:1px 4px 6px -1px #888;-moz-box-shadow:1px 4px 6px -1px #888;-webkit-box-shadow:1px 4px 6px -1px #888;cursor:default}#side-sortables #sq_options_feedback .sq_options_feedback_popup,#side-sortables #sq_options_support .sq_options_support_popup{z-index:1002}#sq_options_support .sq_options_support_popup{right:0}#sq_options_feedback .sq_options_feedback_popup{left:-101px}#sq_options_feedback table td{text-align:center;color:#999;min-width:50px;height:70px}#sq_options_feedback .sq_options_feedback_popup li,#sq_options_support .sq_options_support_popup li{color:#333;line-height:16px;font-size:13px;font-weight:400;margin:0;padding:3px 5px}#sq_options_feedback #sq_options_feedback_error,#sq_options_support #sq_options_support_error{margin:6px 0}#sq_options_feedback .sq_small_input{width:100%;height:70px}#sq_options_support .sq_small_input{width:100%}#sq_options_feedback .sq_options_feedback_popup #sq_feedback_submit,#sq_options_support .sq_options_support_popup #sq_support_submit{background-color:#589ee4;font-size:12px;font-weight:700;color:#fff;width:100px;margin:10px auto 5px;padding:5px;position:relative;text-shadow:1px 1px #555;border:0;cursor:pointer}#sq_options_feedback #sq_options_feedback_close,#sq_options_support #sq_options_close{position:absolute;right:8px;top:3px;font-size:13px;font-weight:700;color:#999;width:8px;line-height:16px;padding:0 5px 3px;border-radius:10px;cursor:pointer;z-index:2}#sq_options_feedback .sq_options_feedback_popup li{clear:both}#sq_facebook_b{padding:6px 50px;clear:both;display:table}#sq_facebook_b>span{display:block;float:left;font-weight:700;color:#006400}#sq_facebook_b .sq_facebook_title{width:100%;font-size:16px;text-align:center;margin:5px auto}#sq_facebook_b .sq_facebook_image{width:100px;margin:3px 7px 5px 24px}#sq_facebook_b .sq_facebook_image img{width:100px}#sq_facebook_b .sq_facebook_frame{margin-top:35px}#postsquirrly.sq_frontend .sq_frontend_noapi{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}#postsquirrly .sq_frontend_noapi_inner{text-align:center;margin:6px auto}#postsquirrly .sq_frontend_noapi_inner img{width:277px}#postsquirrly .sq_frontend_noapi a{text-decoration:none}@media (min-width:1024px){body.admin-bar #sq_modal_overlay{height:calc(100vh - 32px)}}#sq_liveassistant #sq_modal_overlay{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.5);z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sq_liveassistant #sq_modal{width:550px;left:calc(50% - 250px);top:50px;background-color:#fff;position:fixed;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden;z-index:10000}#sq_liveassistant #sq_modal #sq_modal_header{padding:18px 15px;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);text-align:left}#sq_liveassistant #sq_modal #sq_modal_header_title{font-size:18px;font-weight:700}#sq_liveassistant #sq_modal #sq_modal_header .sq_logo{vertical-align:top!important;margin:2px}#sq_liveassistant #sq_modal #sq_modal_body{padding:30px 30px 0;text-align:left;min-height:150px}#sq_liveassistant #sq_modal #sq_modal_body h4{font-size:16px;padding:0 0 15px;margin:0}#sq_liveassistant #sq_modal .sq_modal_body_buttons_wrapper{border-top:none;text-align:left;padding:20px 30px 10px 0;overflow:hidden}#sq_liveassistant #sq_modal .sq_modal_body_submit{background-color:#1e933d;border:0;color:#fff;line-height:1;padding:12px 20px;font-size:14px;width:200px;height:38px;cursor:pointer}#sq_liveassistant #sq_modal .sq_modal_body_options_wrapper{padding:20px 0}.sq_minloading{position:relative;opacity:.5}#postsquirrly.sq_frontend #sq_options{display:none}#postsquirrly.sq_frontend ul,#postsquirrly.sq_frontend ul li{list-style:none!important}
1
+ @import url(https://fonts.googleapis.com/css?family=Open+Sans);@-webkit-keyframes play{0%{background-position:0}to{background-position:-400px}}@-moz-keyframes play{0%{background-position:0}to{background-position:-400px}}@-ms-keyframes play{0%{background-position:0}to{background-position:-400px}}@-o-keyframes play{0%{background-position:0}to{background-position:-400px}}@keyframes play{0%{background-position:0}to{background-position:-400px}}.sq_loading{height:60px;background:url(../img/loading.gif) no-repeat center!important}.sq_minloading:after,.sq_minloading:before{position:absolute!important;right:calc(50% - 10px)!important;top:calc(50% - 8px)!important;display:block!important;float:right!important;line-height:30px!important;content:""!important;padding:0!important;margin:0 0 0 5px!important;height:16px!important;width:20px!important;background:url(../img/minloading.png) no-repeat!important;-webkit-animation:play 1s steps(10) infinite;-moz-animation:play 1s steps(10) infinite;-o-animation:play 1s steps(10) infinite;animation:play 1s steps(10) infinite}#sq_preloading{text-align:center;font-size:15px;line-height:24px;color:gray}.sq_sla_connect_notice{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}.sq_sla_connect_notice_content{text-align:center;margin:6px auto}.sq_sla_connect_notice a{text-decoration:none}.sq_sla_connect_notice_content a img{width:277px}#postsquirrly{background:0 0;border:0;margin:0;padding:2px;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#postsquirrly .postbox-header{display:none}#postsquirrly *,#sq_blocksnippet *{box-sizing:border-box}#sq_blocksnippet:not(.closed) .inside{display:block!important}#sq_blocksnippet.closed .inside{display:none!important}#postsquirrly.closed .inside{display:block}.sq_push{position:absolute;top:-7px;left:30px;font-size:10px;margin:0;border:1px solid #333;background-color:#8b0000;border-radius:50px;-webkit-border-radius:50px;-moz-border-radius:50px;padding:0 1px;width:14px;text-shadow:1px 1px #333;color:#fff;font-family:'Megalopolis',Arial,Helvetica,sans-serif;text-align:center}#sq_options_dasboard .sq_push{left:36px}#postsquirrly div.inside,#postsquirrly p,#postsquirrly td,#sq_blocksearch ul,#sq_blockseo ul,#sq_options>ul{margin:0;padding:0}.edit-post-sidebar #sq_options{display:none}#postsquirrly .handlediv,#postsquirrly .hndle{background:gray;opacity:0;height:1px;line-height:0}#postsquirrly .sq_header{color:#a0a0a0;font-size:14px;font-weight:400;padding:5px 7px;margin:0;line-height:20px;border-bottom:1px dashed #d1d1d1}#postsquirrly .sq_box{background-color:#fff;margin-bottom:15px;border:1px solid #ccd0d4}#normal-sortables #postsquirrly .sq_box{max-width:490px;margin:auto}#postsquirrly.sq_sticky{position:fixed!important;z-index:90000!important;right:3px;bottom:0;top:auto;height:136px;width:285px!important;padding:1px!important;background:#fff!important;overflow-x:auto!important;box-shadow:0 0 10px 0 #555!important}#postsquirrly.sq_sticky::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar{width:7px;background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar-thumb{background-color:#bdafba;border:0}#postsquirrly.sq_sticky .hndle,#postsquirrly.sq_sticky.minimized #sq_briefcase_list,#postsquirrly.sq_sticky.minimized #sq_briefcase_topcontent{display:none!important}#postsquirrly.sq_sticky .sq_header{cursor:move}#postsquirrly .sq_box_close,#postsquirrly .sq_box_maximize,#postsquirrly .sq_box_minimize{display:block;float:right;margin:0;cursor:pointer;font-family:Arial,sans-serif;font-weight:400;font-size:17px;color:gray;padding:0 0 0 10px;height:22px}#postsquirrly.sq_sticky.minimized{height:95px!important;overflow:hidden!important}#postsquirrly .inside{position:relative;height:100%}#postsquirrly .sq_box.sq_sticky{position:fixed;top:32px;z-index:99999;height:100%;max-width:291px;overflow-x:auto}#postsquirrly.sq_sticky .sq_box.sq_sticky{position:absolute;top:0;bottom:0;height:100%;margin:0}#postsquirrly .sq_box.sq_sticky>div{margin-bottom:25px}#postsquirrly .sq_box:hover:before{opacity:.8}#postsquirrly .sq_box:hover .sq_header{color:#444}#sq_blocklogin{background-color:#ffffe0}#sq_blocklogin input,#sq_blocklogin textarea{font-family:Arial,Helvetica,sans-serif;font-size:14px;height:30px;padding:6px}#postsquirrly .sq_button,#sq_blocklogin #sq_login{cursor:pointer;background-color:#589ee4;color:#fff;border:0}#postsquirrly .sq_button{display:block;text-decoration:none;line-height:30px;font-weight:700;margin:0;padding:0 15px;border-radius:0;vertical-align:top}#sq_blocklogin #sq_login{min-width:100px;min-height:35px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px}#sq_blocklogin label{margin-top:0;margin-right:2px;width:72px;display:inline-block}#sq_blocklogin ul li{position:relative;font-family:"Lucida Grande",Arial,Helvetica,sans-serif;font-size:12px;padding:4px 0 4px 5px;margin:5px 0;line-height:16px;text-shadow:1px 1px #fff;text-align:center}#postsquirrly .sq_button,#sq_blocklogin .sq_info{font-size:13px;text-align:center}#sq_blocklogin .sq_error{font-size:12px;text-align:center;color:red;margin:5px auto}#sq_blocklogin #sq_register{margin:5px 0;font-size:16px;font-weight:700}#sq_blocklogin #sq_register_wait{display:inline-block;margin-left:2px}#sq_blocklogin #sq_autologin{padding:20px 10px 5px}#sq_blocklogin #sq_autologin #sq_loginimage{display:block;background-color:#589ee4;height:auto;width:100px;font-size:15px;color:#fff;font-weight:700;margin:13px;padding:10px 0;text-decoration:none;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;cursor:pointer}#sq_blocklogin #sq_register_email{text-align:center;width:250px;height:45px;margin:14px auto 11px}#sq_blocklogin #sq_register_email #sq_email{width:160px!important;border:2px solid #589ee4}#sq_blocklogin #sq_signin{color:#11a5c1;margin:5px;cursor:pointer}#sq_options,#sq_options>ul>li{position:relative;float:right;padding:0}#sq_options{height:40px;margin:0;z-index:13}#side-sortables #sq_options{z-index:1003}#postsquirrly #sq_options{float:none;background:0 0;border:0;box-shadow:none}#normal-sortables #postsquirrly #sq_options{display:flex;width:280px;margin:10px auto}#sq_options>ul>li{font-family:"Open Sans",Arial,sans-serif!important;width:102px;color:#444;font-size:14px;margin:0 auto;cursor:pointer}#sq_options li#sq_options_support{margin-left:11px;width:105px}#sq_options_dasboard .sq_text a,#sq_options_support .sq_text{display:block;float:left;font-family:"Open Sans",Arial,sans-serif!important;font-size:12px;color:#333;text-decoration:none;padding:3px 5px;border:1px solid #ccc;border-radius:5px;background:#fff;background:-moz-linear-gradient(top,#fff,#f5f5f5);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f5f5f5))}#sq_options .sq_icon{display:block;float:left;background:url(../img/sprite.png) no-repeat;margin:-8px 5px 0 3px}#sq_options>ul>li#sq_options_feedback{width:38px;margin-left:2px}#sq_options_feedback .sq_label_feedback_smiley{display:block;height:37px;width:37px;margin:5px auto;background:url(../img/sprite.png) no-repeat;border:0;cursor:pointer}#sq_options_feedback .sq_feedback_smiley{display:none}#sq_options_feedback .sq_label_feedback_0{background-position:-102px -154px!important}#sq_options_feedback .sq_label_feedback_1{background-position:-148px -154px!important}#sq_options_feedback .sq_label_feedback_2{background-position:-194px -154px!important}#sq_options_feedback .sq_label_feedback_3{background-position:-240px -154px!important}#sq_options_feedback .sq_label_feedback_4{background-position:-284px -154px!important}#sq_options_feedback .sq_icon{height:37px;width:35px;background-position:-194px -154px}#sq_options_support .sq_icon{height:37px;width:30px;background-position:-5px -154px}#sq_options_dasboard .sq_icon{height:39px;width:40px;background-position:-40px -154px}#sq_options_feedback .sq_options_feedback_popup,#sq_options_support .sq_options_support_popup{display:table;min-width:345px;position:absolute;z-index:12;background-color:#fff;padding:5px;margin-top:0;top:33px;border:1px solid #ccc;border-radius:0 7px 7px 7px;-moz-border-radius:0 7px 7px 7px;-webkit-border-radius:0 7px 7px 7px;box-shadow:1px 4px 6px -1px #888;-moz-box-shadow:1px 4px 6px -1px #888;-webkit-box-shadow:1px 4px 6px -1px #888;cursor:default}#side-sortables #sq_options_feedback .sq_options_feedback_popup,#side-sortables #sq_options_support .sq_options_support_popup{z-index:1002}#sq_options_support .sq_options_support_popup{right:0}#sq_options_feedback .sq_options_feedback_popup{left:-101px}#sq_options_feedback table td{text-align:center;color:#999;min-width:50px;height:70px}#sq_options_feedback .sq_options_feedback_popup li,#sq_options_support .sq_options_support_popup li{color:#333;line-height:16px;font-size:13px;font-weight:400;margin:0;padding:3px 5px}#sq_options_feedback #sq_options_feedback_error,#sq_options_support #sq_options_support_error{margin:6px 0}#sq_options_feedback .sq_small_input{width:100%;height:70px}#sq_options_support .sq_small_input{width:100%}#sq_options_feedback .sq_options_feedback_popup #sq_feedback_submit,#sq_options_support .sq_options_support_popup #sq_support_submit{background-color:#589ee4;font-size:12px;font-weight:700;color:#fff;width:100px;margin:10px auto 5px;padding:5px;position:relative;text-shadow:1px 1px #555;border:0;cursor:pointer}#sq_options_feedback #sq_options_feedback_close,#sq_options_support #sq_options_close{position:absolute;right:8px;top:3px;font-size:13px;font-weight:700;color:#999;width:8px;line-height:16px;padding:0 5px 3px;border-radius:10px;cursor:pointer;z-index:2}#sq_options_feedback .sq_options_feedback_popup li{clear:both}#sq_facebook_b{padding:6px 50px;clear:both;display:table}#sq_facebook_b>span{display:block;float:left;font-weight:700;color:#006400}#sq_facebook_b .sq_facebook_title{width:100%;font-size:16px;text-align:center;margin:5px auto}#sq_facebook_b .sq_facebook_image{width:100px;margin:3px 7px 5px 24px}#sq_facebook_b .sq_facebook_image img{width:100px}#sq_facebook_b .sq_facebook_frame{margin-top:35px}#postsquirrly.sq_frontend .sq_frontend_noapi{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}#postsquirrly .sq_frontend_noapi_inner{text-align:center;margin:6px auto}#postsquirrly .sq_frontend_noapi_inner img{width:277px}#postsquirrly .sq_frontend_noapi a{text-decoration:none}@media (min-width:1024px){body.admin-bar #sq_modal_overlay{height:calc(100vh - 32px)}}#sq_liveassistant #sq_modal_overlay{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.5);z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sq_liveassistant #sq_modal{width:550px;left:calc(50% - 250px);top:50px;background-color:#fff;position:fixed;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden;z-index:10000}#sq_liveassistant #sq_modal #sq_modal_header{padding:18px 15px;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);text-align:left}#sq_liveassistant #sq_modal #sq_modal_header_title{font-size:18px;font-weight:700}#sq_liveassistant #sq_modal #sq_modal_header .sq_logo{vertical-align:top!important;margin:2px}#sq_liveassistant #sq_modal #sq_modal_body{padding:30px 30px 0;text-align:left;min-height:150px}#sq_liveassistant #sq_modal #sq_modal_body h4{font-size:16px;padding:0 0 15px;margin:0}#sq_liveassistant #sq_modal .sq_modal_body_buttons_wrapper{border-top:none;text-align:left;padding:20px 30px 10px 0;overflow:hidden}#sq_liveassistant #sq_modal .sq_modal_body_submit{background-color:#1e933d;border:0;color:#fff;line-height:1;padding:12px 20px;font-size:14px;width:200px;height:38px;cursor:pointer}#sq_liveassistant #sq_modal .sq_modal_body_options_wrapper{padding:20px 0}.sq_minloading{position:relative;opacity:.5}#postsquirrly.sq_frontend #sq_options{display:none}#postsquirrly.sq_frontend ul,#postsquirrly.sq_frontend ul li{list-style:none!important}