Advanced Ads - Version 1.17

Version Description

  • improved AdSense ad unit list coming from the AdSense API
  • improved "highlight ads" option in Ad Health
  • show notice if AJAX calls are broken
  • added com.pl as exception for placing ads.txt files in subdomains
  • removed placeholder for AdSense ads in the Customizer and Elementor editor
  • fix for WP Smush lazy load preventing image ads from showing at all
Download this release

Release Info

Developer webzunft
Plugin Icon 128x128 Advanced Ads
Version 1.17
Comparing to
See all releases

Code changes from version 1.16.1 to 1.17

Files changed (43) hide show
  1. admin/assets/css/admin.css +36 -10
  2. admin/assets/js/admin.js +149 -32
  3. admin/class-advanced-ads-admin.php +4 -0
  4. admin/includes/ad-health-notices.php +0 -21
  5. admin/includes/class-ad-groups-list.php +26 -22
  6. admin/includes/class-ad-network-ad-importer.php +22 -12
  7. admin/includes/class-ad-network-ad-unit.php +92 -54
  8. admin/includes/class-ad-network.php +461 -362
  9. admin/includes/class-ad-type.php +178 -114
  10. admin/includes/class-licenses.php +22 -16
  11. admin/includes/class-list-filters.php +63 -52
  12. advanced-ads.php +3 -3
  13. classes/ad-ajax.php +25 -0
  14. classes/ad-health-notices.php +0 -11
  15. classes/ad.php +3 -1
  16. classes/ad_group.php +4 -0
  17. classes/ad_placements.php +0 -4
  18. classes/ad_type_image.php +33 -24
  19. classes/frontend-notices.php +132 -0
  20. classes/frontend_checks.php +227 -63
  21. classes/plugin.php +0 -6
  22. languages/advanced-ads.pot +1975 -1859
  23. modules/ads-txt/includes/class-advanced-ads-ads-txt-utils.php +1 -1
  24. modules/gadsense/admin/admin.php +2 -2
  25. modules/gadsense/admin/assets/js/adsense.js +48 -9
  26. modules/gadsense/admin/assets/js/connect-adsense.js +13 -3
  27. modules/gadsense/admin/assets/js/mapi-settings.js +2 -7
  28. modules/gadsense/admin/views/adsense-account.php +8 -1
  29. modules/gadsense/admin/views/adsense-ad-parameters.php +5 -8
  30. modules/gadsense/admin/views/auto-ads-video.php +16 -0
  31. modules/gadsense/admin/views/connect-adsense.php +6 -0
  32. modules/gadsense/admin/views/external-ads-links.php +5 -4
  33. modules/gadsense/admin/views/external-ads-list.php +104 -76
  34. modules/gadsense/includes/class-ad-type-adsense.php +12 -25
  35. modules/gadsense/includes/class-mapi.php +119 -13
  36. modules/gadsense/includes/class-network-adsense.php +35 -19
  37. modules/gadsense/public/public.php +0 -4
  38. readme.txt +11 -1
  39. vendor/autoload_52.php +1 -1
  40. vendor/composer/autoload_classmap.php +93 -1
  41. vendor/composer/autoload_real_52.php +3 -3
  42. vendor/composer/autoload_static.php +93 -1
  43. vendor/composer/installed.json +74 -74
admin/assets/css/admin.css CHANGED
@@ -87,7 +87,7 @@ h2.hndle .advads-hndlelinks a + a, #advads_overview_adsense_stats .advads-hndlel
87
  .advads-metabox-notices { }
88
  .advads-metabox-notices li { border: solid 1px #eee; margin: -1px 0 0; padding: 5px; }
89
  .advads-metabox-notices a { color: inherit; }
90
- .advads-metabox-notices .error { color: red; }
91
  .advads-metabox-notices .warning { color: #de8400; }
92
 
93
  #ad-main-box { overflow: hidden; }
@@ -332,23 +332,49 @@ tr:hover .on-hover { display: block; }
332
  /**
333
  - GOOGLE ADSENSE MODULE
334
  -*/
335
- #adsense-ad-param-error { color: red; font-weight: bold; }
336
  .advads-adsense-content { width: 100%; }
337
- #mapi-insert-code a, #mapi-open-selector a, #mapi-close-selector-link a { padding: 0 10px; color: inherit; }
338
  #mapi-quota-message{ color: #ef8e00; font-style: italic; font-weight: bold; }
339
  .aa-select-list tbody [data-mapiaction="getCode"] { color: #46b450; }
340
  .aa-select-list tbody .disabled[data-mapiaction="getCode"] { color: #a7a7a7; cursor: default; }
341
  .aa-select-list tbody [data-mapiaction="updateCode"] { color: #0085ba; }
342
  #mapi-toggle-idle { font-size: 20px; padding: 9px; position: absolute; top: 0; right: 78px; color: #72777c; cursor: pointer; }
343
  #remote-ad-unsupported-ad-type { background-color: #f0f0f0; padding: 8px; border: 1px solid #d6d6d6; }
344
- #mapi-table-wrap .unsupported { text-decoration:line-through; color:#555 }
345
- #mapi-table-wrap .unsupported span { text-decoration:none;color:#555 }
 
346
  #mapi-table-wrap table { border-left:none; border-right: none; }
 
 
347
  #mapi-table-wrap.overflow { height: 22.2em; overflow-y: auto; }
348
  #mapi-table-wrap.overflow table { position: absolute; }
 
 
 
 
349
  .advanced-ads-adsense-support { background-color: #fbfbfb; border: 1px solid #eee; padding: 1em; }
350
  .advanced-ads-adsense-support-text { font-size: 1.4em; font-weight: 400; }
351
  .advanced-ads-adsense-support .dashicons { color: #ffb900; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
 
353
  /**
354
  - TABS + SETTINGS
@@ -358,8 +384,8 @@ tr:hover .on-hover { display: block; }
358
  .advads-tab input[type="checkbox"] { margin-right: 8px; }
359
  .advads-tab .form-table th, .advads-tab, .advads-tab .form-table td { padding-bottom: 30px; }
360
  .advads-tab.active { display: block; }
361
- .advads-license-activate-active { color: green; }
362
- .advads-license-activate-error { color: red; }
363
  .advads-license-activate-error a { color: inherit; }
364
  .advads-tab-sub-menu ul { overflow: hidden; }
365
  .advads-tab-sub-menu ul li { float: left; padding-right: 0.5em; }
@@ -416,8 +442,8 @@ tr:hover .on-hover { display: block; }
416
  /**
417
  - GENERAL
418
  -*/
419
- .advads-error-message { color: red !important; }
420
- .advads-error-message a { color: red; text-decoration: underline; }
421
  .advads-success-message { color: green !important; }
422
  .advads-hidden { display: none; }
423
  .advads-loader { display: block; width: 43px; height: 11px; background: url(../img/loader.gif) no-repeat; }
@@ -446,7 +472,7 @@ tr:hover .on-hover { display: block; }
446
 
447
  /* ads.txt */
448
  .advads-ads-txt-updated { border-left: 4px solid green; padding-left: 4px; }
449
- .advads-error-message.advads-ads-txt-updated { border-color: red; }
450
  #advads-ads-txt-notices li { padding-top: 1em; }
451
  #advads-ads-txt-notices li:nth-child(even) { background-color: #f9f9f9; }
452
 
87
  .advads-metabox-notices { }
88
  .advads-metabox-notices li { border: solid 1px #eee; margin: -1px 0 0; padding: 5px; }
89
  .advads-metabox-notices a { color: inherit; }
90
+ .advads-metabox-notices .error { color: #dc3232; }
91
  .advads-metabox-notices .warning { color: #de8400; }
92
 
93
  #ad-main-box { overflow: hidden; }
332
  /**
333
  - GOOGLE ADSENSE MODULE
334
  -*/
335
+ #adsense-ad-param-error { color: #dc3232; font-weight: bold; }
336
  .advads-adsense-content { width: 100%; }
337
+ .mapi-insert-code a, .mapi-open-selector a, .mapi-close-selector-link a { padding: 0 10px; color: inherit; }
338
  #mapi-quota-message{ color: #ef8e00; font-style: italic; font-weight: bold; }
339
  .aa-select-list tbody [data-mapiaction="getCode"] { color: #46b450; }
340
  .aa-select-list tbody .disabled[data-mapiaction="getCode"] { color: #a7a7a7; cursor: default; }
341
  .aa-select-list tbody [data-mapiaction="updateCode"] { color: #0085ba; }
342
  #mapi-toggle-idle { font-size: 20px; padding: 9px; position: absolute; top: 0; right: 78px; color: #72777c; cursor: pointer; }
343
  #remote-ad-unsupported-ad-type { background-color: #f0f0f0; padding: 8px; border: 1px solid #d6d6d6; }
344
+ #remote-ad-unsupported-ad-type ul { list-style-type: disc; padding-left: 20px }
345
+ #remote-ad-unsupported-ad-type[style*="display: block"] + p { display: none; }
346
+ .mapi-insert-code[style*="display: none"] + .mapi-open-selector .mapi-optional-or { display: none; }
347
  #mapi-table-wrap table { border-left:none; border-right: none; }
348
+ #mapi-table-wrap tr { vertical-align: middle; }
349
+ #mapi-table-wrap td { vertical-align: inherit; }
350
  #mapi-table-wrap.overflow { height: 22.2em; overflow-y: auto; }
351
  #mapi-table-wrap.overflow table { position: absolute; }
352
+ #mapi-table-wrap .error {background-color: #e77373; position: relative;}
353
+ #mapi-table-wrap .error td {color: #23282d; }
354
+ #mapi-table-wrap .error td:first-of-type::before { content: ""; width: 5px; height: 100%; background-color: #dc3232; position: absolute; left: 0; top: 0; }
355
+ #mapi-table-wrap .error .unittype button { display: none; }
356
  .advanced-ads-adsense-support { background-color: #fbfbfb; border: 1px solid #eee; padding: 1em; }
357
  .advanced-ads-adsense-support-text { font-size: 1.4em; font-weight: 400; }
358
  .advanced-ads-adsense-support .dashicons { color: #ffb900; }
359
+ .advads-adsense-layout-key { display: none; }
360
+ .mapiaction.icon-button {
361
+ display: block;
362
+ margin: 12px auto;
363
+ cursor: pointer;
364
+ }
365
+
366
+ /**
367
+ * Connect to Google AdSense modal
368
+ */
369
+
370
+ .gadsense-modal-error {
371
+ background-color: #fff;
372
+ border: 1px solid #dc3232;
373
+ border-left-width: 4px;
374
+ padding: .75em;
375
+ margin: 1em 0;
376
+ display: none;
377
+ }
378
 
379
  /**
380
  - TABS + SETTINGS
384
  .advads-tab input[type="checkbox"] { margin-right: 8px; }
385
  .advads-tab .form-table th, .advads-tab, .advads-tab .form-table td { padding-bottom: 30px; }
386
  .advads-tab.active { display: block; }
387
+ .advads-license-activate-active { color: #46b450; }
388
+ .advads-license-activate-error { color: #dc3232; }
389
  .advads-license-activate-error a { color: inherit; }
390
  .advads-tab-sub-menu ul { overflow: hidden; }
391
  .advads-tab-sub-menu ul li { float: left; padding-right: 0.5em; }
442
  /**
443
  - GENERAL
444
  -*/
445
+ .advads-error-message { color: #dc3232 !important; }
446
+ .advads-error-message a { color: #dc3232; text-decoration: underline; }
447
  .advads-success-message { color: green !important; }
448
  .advads-hidden { display: none; }
449
  .advads-loader { display: block; width: 43px; height: 11px; background: url(../img/loader.gif) no-repeat; }
472
 
473
  /* ads.txt */
474
  .advads-ads-txt-updated { border-left: 4px solid green; padding-left: 4px; }
475
+ .advads-error-message.advads-ads-txt-updated { border-color: #dc3232; }
476
  #advads-ads-txt-notices li { padding-top: 1em; }
477
  #advads-ads-txt-notices li:nth-child(even) { background-color: #f9f9f9; }
478
 
admin/assets/js/admin.js CHANGED
@@ -1095,7 +1095,7 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1095
  }
1096
 
1097
  const selectedRow = AdvancedAdsAdmin.AdImporter.getSelectedRow()
1098
- tbody.find( 'tr' ).removeClass( 'selected' )
1099
  if ( selectedRow ) {
1100
  //make sure, it is visible before applying the zebra stripes
1101
  selectedRow.show()
@@ -1111,9 +1111,43 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1111
  // highlight the selected row
1112
  selectedRow.css( 'background-color', '' )
1113
  selectedRow.addClass( 'selected' )
 
 
1114
  }
 
1115
  return selectedRow || false
1116
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1117
  getSelectedRow () {
1118
  const selectedId = AdvancedAdsAdmin.AdImporter.adNetwork.getSelectedId()
1119
  const tbody = jQuery( '#mapi-table-wrap tbody' )
@@ -1130,9 +1164,9 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1130
  const network = AdvancedAdsAdmin.AdImporter.adNetwork
1131
  network.openSelector()
1132
 
1133
- jQuery( '#mapi-insert-code' ).css( 'display', 'inline' )
1134
- jQuery( '#mapi-open-selector' ).css( 'display', 'none' )
1135
- jQuery( '#mapi-close-selector-link' ).css( 'display', 'inline' )
1136
  jQuery( '.advads-adsense-code' ).css( 'display', 'none' )
1137
  jQuery( '#remote-ad-unsupported-ad-type' ).css( 'display', 'none' )
1138
 
@@ -1176,24 +1210,26 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1176
  jQuery( document ).on( 'click', '.prevent-default', function ( ev ) { ev.preventDefault() } )
1177
 
1178
  // handle clicks for the "insert new ... code" anchor
1179
- jQuery( document ).on( 'click', '#mapi-insert-code', function ( e ) {
1180
  e.preventDefault()
 
1181
  jQuery( '.advads-adsense-code' ).show()
1182
- jQuery( '#mapi-open-selector' ).css( 'display', 'inline' )
1183
- jQuery( '#mapi-close-selector-link' ).css( 'display', 'inline' )
 
1184
  jQuery( '#mapi-wrap' ).css( 'display', 'none' )
1185
  var SNT = AdvancedAdsAdmin.AdImporter.adNetwork.getCustomInputs()
1186
  SNT.css( 'display', 'none' )
1187
- jQuery( this ).hide()
1188
  } )
1189
 
1190
  // handle clicks for the "get ad code from your linked account" anchor
1191
- jQuery( document ).on( 'click', '#mapi-open-selector a', function () {
1192
  AdvancedAdsAdmin.AdImporter.openExternalAdsList()
1193
  } )
1194
 
1195
  // the close button of the ad unit list
1196
- jQuery( document ).on( 'click', '#mapi-close-selector,#mapi-close-selector-link', function () {
 
1197
  AdvancedAdsAdmin.AdImporter.manualSetup()
1198
  } )
1199
 
@@ -1218,7 +1254,11 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1218
  case 'toggleidle':
1219
  AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle = ! AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle
1220
  AdvancedAdsAdmin.AdImporter.toggleIdleAds( AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle )
1221
- break
 
 
 
 
1222
  default:
1223
  }
1224
  } )
@@ -1233,13 +1273,18 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1233
  * this method is an equivalent to the close ad list button.
1234
  */
1235
  manualSetup () {
1236
- jQuery( '#mapi-open-selector,.advads-adsense-show-code' ).css( 'display', 'inline' )
1237
- jQuery( '#mapi-insert-code' ).css( 'display', 'inline' )
1238
- jQuery( '#mapi-close-selector-link' ).css( 'display', 'none' )
1239
  jQuery( '#mapi-wrap' ).css( 'display', 'none' )
1240
 
1241
  var SNT = AdvancedAdsAdmin.AdImporter.adNetwork.getCustomInputs()
1242
  SNT.css( 'display', 'block' )
 
 
 
 
 
1243
  AdvancedAdsAdmin.AdImporter.adNetwork.onManualSetup()
1244
  },
1245
 
@@ -1275,8 +1320,8 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1275
  { height: 0, },
1276
  360,
1277
  function () {
1278
- jQuery( '#mapi-open-selector,.advads-adsense-show-code' ).css( 'display', 'inline' )
1279
- jQuery( '#mapi-close-selector-link' ).css( 'display', 'none' )
1280
  jQuery( '#mapi-wrap' ).css( {
1281
  display: 'none',
1282
  height: 'auto',
@@ -1294,21 +1339,15 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1294
  * updates the UI, (call if the selected unit is supported)
1295
  */
1296
  unitIsNotSupported: function ( slotID ) {
1297
- jQuery( '#remote-ad-unsupported-ad-type' ).css( 'display', 'block' )
1298
- AdsenseMAPI.unsupportedUnits[ slotID ] = 1
1299
- jQuery( 'i[data-mapiaction="getCode"][data-slotid="' + slotID + '"]' ).addClass( 'disabled' )
1300
- jQuery( 'tr[data-slotid="' + slotID + '"] .unitcode > span' ).addClass( 'unsupported' )
1301
- if ( ! jQuery( 'tr[data-slotid="' + slotID + '"] .unittype a' ).length ) {
1302
- var td = jQuery( 'tr[data-slotid="' + slotID + '"] .unittype' )
1303
- var content = td.text()
1304
- td.html( '<a target="_blank" href="' + AdsenseMAPI.unsupportedLink + '" data-type="' + content + '">' + AdsenseMAPI.unsupportedText + '</a>' )
1305
- }
1306
- if ( ! jQuery( 'tr[data-slotid="' + slotID + '"] .unitsize a' ).length ) {
1307
- var td = jQuery( 'tr[data-slotid="' + slotID + '"] .unitsize' )
1308
- var content = td.text()
1309
- td.html( '<a target="_blank" href="' + AdsenseMAPI.unsupportedLink + '" data-size="' + content + '">' + AdsenseMAPI.unsupportedText + '</a>' )
1310
- }
1311
-
1312
  },
1313
 
1314
  /**
@@ -1321,7 +1360,6 @@ if ( ! window.AdvancedAdsAdmin.AdImporter ) window.AdvancedAdsAdmin.AdImporter =
1321
  delete AdsenseMAPI.unsupportedUnits[ slotID ]
1322
  }
1323
  jQuery( 'i[data-mapiaction="getCode"][data-slotid="' + slotID + '"]' ).removeClass( 'disabled' )
1324
- jQuery( 'tr[data-slotid="' + slotID + '"] .unitcode > span' ).removeClass( 'unsupported' )
1325
  if ( jQuery( 'tr[data-slotid="' + slotID + '"] .unittype a' ).length ) {
1326
  var td = jQuery( 'tr[data-slotid="' + slotID + '"] .unittype' )
1327
  var content = jQuery( 'tr[data-slotid="' + slotID + '"] .unittype a' ).attr( 'data-type' )
@@ -1485,3 +1523,82 @@ class AdvancedAdsAdNetwork {
1485
  class AdvancedAdsExternalAdUnit {
1486
 
1487
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1095
  }
1096
 
1097
  const selectedRow = AdvancedAdsAdmin.AdImporter.getSelectedRow()
1098
+ tbody.find( 'tr' ).removeClass( 'selected error' );
1099
  if ( selectedRow ) {
1100
  //make sure, it is visible before applying the zebra stripes
1101
  selectedRow.show()
1111
  // highlight the selected row
1112
  selectedRow.css( 'background-color', '' )
1113
  selectedRow.addClass( 'selected' )
1114
+
1115
+ this.scrollToSelectedRow(selectedRow);
1116
  }
1117
+
1118
  return selectedRow || false
1119
  },
1120
+
1121
+ scrollToSelectedRow($selectedRow) {
1122
+ const $wrap = jQuery('#mapi-table-wrap'),
1123
+ wrapHeight = $wrap.height(),
1124
+ wrapScrolled = $wrap.scrollTop();
1125
+
1126
+ // just in case this does not get passed a selected row, scroll to top of the table
1127
+ if (!$selectedRow) {
1128
+ $wrap.animate({scrollTop: 0}, 200);
1129
+ return;
1130
+ }
1131
+
1132
+ // get the position of the selectedRow within the table wrap
1133
+ let scroll = $selectedRow.position().top,
1134
+ bottom = +scroll + $selectedRow.height();
1135
+ // if the (top of the) element is not yet visible scroll to it
1136
+ if (scroll < wrapScrolled || bottom > wrapScrolled || scroll > wrapScrolled + wrapHeight) {
1137
+ // scrolled element is below current scroll position, i.e. we need to scroll past it not to top
1138
+ if (bottom > $wrap.children('table').height() - wrapHeight) {
1139
+ scroll = bottom;
1140
+ }
1141
+
1142
+ // if the selected element is on the "first page" let's scroll all the way to the top
1143
+ if (scroll < wrapHeight) {
1144
+ scroll = 0;
1145
+ }
1146
+
1147
+ $wrap.animate({scrollTop: scroll}, 200);
1148
+ }
1149
+ },
1150
+
1151
  getSelectedRow () {
1152
  const selectedId = AdvancedAdsAdmin.AdImporter.adNetwork.getSelectedId()
1153
  const tbody = jQuery( '#mapi-table-wrap tbody' )
1164
  const network = AdvancedAdsAdmin.AdImporter.adNetwork
1165
  network.openSelector()
1166
 
1167
+ jQuery( '.mapi-insert-code' ).css( 'display', 'inline' )
1168
+ jQuery( '.mapi-open-selector' ).css( 'display', 'none' )
1169
+ jQuery( '.mapi-close-selector-link' ).css( 'display', 'inline' )
1170
  jQuery( '.advads-adsense-code' ).css( 'display', 'none' )
1171
  jQuery( '#remote-ad-unsupported-ad-type' ).css( 'display', 'none' )
1172
 
1210
  jQuery( document ).on( 'click', '.prevent-default', function ( ev ) { ev.preventDefault() } )
1211
 
1212
  // handle clicks for the "insert new ... code" anchor
1213
+ jQuery( document ).on( 'click', '.mapi-insert-code', function ( e ) {
1214
  e.preventDefault()
1215
+ jQuery( '#remote-ad-unsupported-ad-type' ).css( 'display', 'none' );
1216
  jQuery( '.advads-adsense-code' ).show()
1217
+ jQuery( '.mapi-open-selector' ).css( 'display', 'inline' )
1218
+ jQuery( '.mapi-close-selector-link' ).css( 'display', 'inline' )
1219
+ jQuery( '.mapi-insert-code' ).css( 'display', 'none' );
1220
  jQuery( '#mapi-wrap' ).css( 'display', 'none' )
1221
  var SNT = AdvancedAdsAdmin.AdImporter.adNetwork.getCustomInputs()
1222
  SNT.css( 'display', 'none' )
 
1223
  } )
1224
 
1225
  // handle clicks for the "get ad code from your linked account" anchor
1226
+ jQuery( document ).on( 'click', '.mapi-open-selector a', function () {
1227
  AdvancedAdsAdmin.AdImporter.openExternalAdsList()
1228
  } )
1229
 
1230
  // the close button of the ad unit list
1231
+ jQuery( document ).on( 'click', '#mapi-close-selector,.mapi-close-selector-link', function () {
1232
+ jQuery( '#remote-ad-unsupported-ad-type' ).css( 'display', 'none' );
1233
  AdvancedAdsAdmin.AdImporter.manualSetup()
1234
  } )
1235
 
1254
  case 'toggleidle':
1255
  AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle = ! AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle
1256
  AdvancedAdsAdmin.AdImporter.toggleIdleAds( AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle )
1257
+ const $inactiveNotice = jQuery('#mapi-notice-inactive');
1258
+ if ($inactiveNotice.length) {
1259
+ $inactiveNotice.toggle(AdvancedAdsAdmin.AdImporter.adNetwork.hideIdle);
1260
+ }
1261
+ break;
1262
  default:
1263
  }
1264
  } )
1273
  * this method is an equivalent to the close ad list button.
1274
  */
1275
  manualSetup () {
1276
+ jQuery( '.mapi-open-selector,.advads-adsense-show-code' ).css( 'display', 'inline' )
1277
+ jQuery( '.mapi-insert-code' ).css( 'display', 'inline' )
1278
+ jQuery( '.mapi-close-selector-link' ).css( 'display', 'none' )
1279
  jQuery( '#mapi-wrap' ).css( 'display', 'none' )
1280
 
1281
  var SNT = AdvancedAdsAdmin.AdImporter.adNetwork.getCustomInputs()
1282
  SNT.css( 'display', 'block' )
1283
+ // hide custom layout key if type is not in-feed
1284
+ if (jQuery('#unit-type').val() !== 'in-feed') {
1285
+ jQuery('.advads-adsense-layout-key').css('display', 'none')
1286
+ .next('div').css('display', 'none');
1287
+ }
1288
  AdvancedAdsAdmin.AdImporter.adNetwork.onManualSetup()
1289
  },
1290
 
1320
  { height: 0, },
1321
  360,
1322
  function () {
1323
+ jQuery( '.mapi-open-selector,.advads-adsense-show-code' ).css( 'display', 'inline' )
1324
+ jQuery( '.mapi-close-selector-link' ).css( 'display', 'none' )
1325
  jQuery( '#mapi-wrap' ).css( {
1326
  display: 'none',
1327
  height: 'auto',
1339
  * updates the UI, (call if the selected unit is supported)
1340
  */
1341
  unitIsNotSupported: function ( slotID ) {
1342
+ jQuery( '#remote-ad-unsupported-ad-type' ).css( 'display', 'block' );
1343
+ AdsenseMAPI.unsupportedUnits[ slotID ] = 1;
1344
+ jQuery( '#unit-code' ).val( '' );
1345
+ jQuery( '#unit-type' ).val( 'normal' );
1346
+ jQuery( '#ad-layout-key' ).val( '' );
1347
+ jQuery( 'tr[data-slotid^="ca-"]' ).removeClass( 'selected error' );
1348
+ var $selectedRow = jQuery('tr[data-slotid="' + slotID + '"]');
1349
+ $selectedRow.addClass('selected error').css('background-color', '');
1350
+ this.scrollToSelectedRow($selectedRow);
 
 
 
 
 
 
1351
  },
1352
 
1353
  /**
1360
  delete AdsenseMAPI.unsupportedUnits[ slotID ]
1361
  }
1362
  jQuery( 'i[data-mapiaction="getCode"][data-slotid="' + slotID + '"]' ).removeClass( 'disabled' )
 
1363
  if ( jQuery( 'tr[data-slotid="' + slotID + '"] .unittype a' ).length ) {
1364
  var td = jQuery( 'tr[data-slotid="' + slotID + '"] .unittype' )
1365
  var content = jQuery( 'tr[data-slotid="' + slotID + '"] .unittype a' ).attr( 'data-type' )
1523
  class AdvancedAdsExternalAdUnit {
1524
 
1525
  }
1526
+
1527
+ // handle AJAX errors mostly caused by other plugins and for all other AJAX errors.
1528
+ // to reproduce this, enable the following PHP code in a PHP mu-plugin to break all AJAX calls
1529
+ /* if ( isset( $_REQUEST['action'] ) && wp_doing_ajax() ) {
1530
+ add_action( 'wp_ajax_' . $_REQUEST['action'], function () {
1531
+ wp_send_json_error( [ 'I\'m Boss now.' ], 400 );
1532
+ }, 0 );
1533
+ }*/
1534
+ (function () {
1535
+ var open = XMLHttpRequest.prototype.open,
1536
+ send = XMLHttpRequest.prototype.send,
1537
+ // variable to hold our request and response data
1538
+ request = {},
1539
+ // array of ajax callbacks that are not prefixed with either `advads_` or `advanced_ads_`.
1540
+ advadsAdditionalActions = [
1541
+ 'load_ad_parameters_metabox',
1542
+ 'load_visitor_conditions_metabox',
1543
+ 'load_display_conditions_metabox',
1544
+ ],
1545
+ handleError = function (event) {
1546
+ request.response = JSON.parse(event.responseText).data;
1547
+ request.status = event.status;
1548
+
1549
+ // check if this is an ajax handler from advanced ads
1550
+ if (
1551
+ typeof request.payload.action !== 'undefined' &&
1552
+ (
1553
+ request.payload.action.indexOf('advads_') === 0
1554
+ || request.payload.action.indexOf('advanced_ads_') === 0
1555
+ || advadsAdditionalActions.indexOf(request.payload.action) !== -1
1556
+ )
1557
+ ) {
1558
+ // dynamically add an WordPress admin_notice
1559
+ var notice;
1560
+ if (!(notice = document.getElementById('advads-ajax-error'))) {
1561
+ notice = document.createElement('div');
1562
+ // IE does not support adding multiple classes in one statement.
1563
+ notice.classList.add('notice');
1564
+ notice.classList.add('notice-error');
1565
+ notice.classList.add('advads-admin-notice');
1566
+ notice.id = 'advads-ajax-error';
1567
+
1568
+ var heading = document.querySelector('div.wrap h1:first-of-type, div.wrap h2:first-of-type');
1569
+ heading.parentNode.insertBefore(notice, heading.nextSibling);
1570
+ heading.scrollIntoView();
1571
+ }
1572
+
1573
+ notice.innerHTML = '<p>' + window.advadstxt.ajax_error_message + '</p>';
1574
+
1575
+ // additionally log the request/response to the browser console
1576
+ console.log(request.method + ' request to ' + request.url + ' with payload ' + JSON.stringify(request.payload) + ' errored with status: ' + request.status + ' and responded ' + JSON.stringify(request.response));
1577
+ }
1578
+ };
1579
+
1580
+ // hook into the XHR send to intercept the request data
1581
+ XMLHttpRequest.prototype.send = function (data) {
1582
+ request.payload = JSON.parse('{"' + decodeURI(data).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}');
1583
+
1584
+ // apply original
1585
+ send.apply(this, arguments);
1586
+ };
1587
+
1588
+ // hook into the XHR open to intercept the response and handle if it errors
1589
+ XMLHttpRequest.prototype.open = function (method, url) {
1590
+ request.method = method;
1591
+ request.url = url;
1592
+
1593
+ this.addEventListener('load', function (event) {
1594
+ // Server errors do not trigger the error event but a load event with a status different than 200
1595
+ if (this.status !== 200) {
1596
+ handleError(event.target);
1597
+ }
1598
+ });
1599
+ this.addEventListener('error', handleError);
1600
+
1601
+ // apply original
1602
+ open.apply(this, arguments);
1603
+ };
1604
+ })();
admin/class-advanced-ads-admin.php CHANGED
@@ -245,6 +245,10 @@ class Advanced_Ads_Admin {
245
  'show_inactive_ads' => __( 'Show inactive ads', 'advanced-ads' ),
246
  'hide_inactive_ads' => __( 'Hide inactive ads', 'advanced-ads' ),
247
  'display_conditions_form_name' => Advanced_Ads_Display_Conditions::FORM_NAME, // not meant for translation.
 
 
 
 
248
  );
249
 
250
  wp_localize_script( $this->plugin_slug . '-admin-script', 'advadstxt', $translation_array );
245
  'show_inactive_ads' => __( 'Show inactive ads', 'advanced-ads' ),
246
  'hide_inactive_ads' => __( 'Hide inactive ads', 'advanced-ads' ),
247
  'display_conditions_form_name' => Advanced_Ads_Display_Conditions::FORM_NAME, // not meant for translation.
248
+ 'ajax_error_message' => __( 'There has been an AJAX error caused by another plugin.', 'advanced-ads' )
249
+ . '&nbsp'
250
+ // translators: %1$s is an opening link tag, %2$s is a closing one.
251
+ . sprintf( __( 'Please contact our %1$ssupport%2$s.', 'advanced-ads' ), '<a href="'. Advanced_Ads_Plugin::support_url( '#utm_source=advanced-ads&utm_medium=link&utm_campaign=broken-ajax' ) .'/" target="_blank">', '</a>' ),
252
  );
253
 
254
  wp_localize_script( $this->plugin_slug . '-admin-script', 'advadstxt', $translation_array );
admin/includes/ad-health-notices.php CHANGED
@@ -34,27 +34,6 @@ $advanced_ads_ad_health_notices = apply_filters( 'advanced-ads-ad-health-notices
34
  ),
35
  'type' => 'problem',
36
  ),
37
- // cache enabled, but not Advanced Ads Pro
38
- // checked using Advanced_Ads_Checks::cache() && ! defined( 'AAP_VERSION' ).
39
- /*'cache_no_pro' => array(
40
- 'text' => sprintf(
41
- // translators: %s is a target URL.
42
- __( 'Your <strong>website uses cache</strong>. Some dynamic features like ad rotation or visitor conditions might not work properly. Use the cache-busting feature of <a href="%s" target="_blank">Advanced Ads Pro</a> to load ads dynamically.', 'advanced-ads' ),
43
- ADVADS_URL . 'add-ons/advanced-ads-pro/#utm_source=advanced-ads&utm_medium=link&utm_campaign=error-cache'
44
- ),
45
- 'type' => 'problem',
46
- ),*/
47
- // Autoptimize found, but no Advanced Ads Pro
48
- // Advanced_Ads_Checks::active_autoptimize() && ! defined( 'AAP_VERSION' ) ).
49
- // 1907: Autoptimize didn’t cause issues for a while. We are no longer showing the warning and might remove this if the plugin doesn’t cause problems anymore.
50
- 'autoptimize_no_pro' => array(
51
- 'text' => sprintf(
52
- // translators: %s is a target URL.
53
- __( '<strong>Autoptimize plugin detected</strong>. While this plugin is great for site performance, it is known to alter code, including scripts from ad networks. <a href="%s" target="_blank">Advanced Ads Pro</a> has a build-in support for Autoptimize.', 'advanced-ads' ),
54
- ADVADS_URL . 'add-ons/advanced-ads-pro/#utm_source=advanced-ads&utm_medium=link&utm_campaign=error-autoptimize'
55
- ),
56
- 'type' => 'problem',
57
- ),
58
  // conflicting plugins found
59
  // Advanced_Ads_Checks::conflicting_plugins().
60
  'conflicting_plugins' => array(
34
  ),
35
  'type' => 'problem',
36
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  // conflicting plugins found
38
  // Advanced_Ads_Checks::conflicting_plugins().
39
  'conflicting_plugins' => array(
admin/includes/class-ad-groups-list.php CHANGED
@@ -82,7 +82,7 @@ class Advanced_Ads_Groups_List {
82
  }
83
 
84
  /**
85
- * render list rows
86
  */
87
  public function render_rows() {
88
  foreach ( $this->groups as $_group ) {
@@ -355,7 +355,7 @@ class Advanced_Ads_Groups_List {
355
 
356
  echo '<div class="row-actions">';
357
  foreach ( $actions as $action => $link ) {
358
- echo "<span class='$action'>$link</span>";
359
  }
360
  echo '</div>';
361
  }
@@ -378,7 +378,7 @@ class Advanced_Ads_Groups_List {
378
 
379
  if ( isset( $_POST['advads-group-name'] ) && '' !== $_POST['advads-group-name'] ) {
380
 
381
- $title = sanitize_text_field( $_POST['advads-group-name'] );
382
  $new_group = wp_create_term( $title, Advanced_Ads::AD_GROUP_TAXONOMY );
383
 
384
  if ( is_wp_error( $new_group ) ) {
@@ -390,11 +390,13 @@ class Advanced_Ads_Groups_List {
390
  $group = new Advanced_Ads_Group( $new_group['term_id'] );
391
 
392
  // allow other add-ons to save their own group attributes.
393
- $atts = apply_filters( 'advanced-ads-group-save-atts', array(
394
- 'type' => 'default',
395
- 'ad_count' => 1,
396
- 'options' => array(),
397
- ),
 
 
398
  $group
399
  );
400
 
@@ -453,14 +455,13 @@ class Advanced_Ads_Groups_List {
453
 
454
  $all_weights = get_option( 'advads-ad-weights', array() );
455
 
456
- // ad_id => group_ids
457
  $ad_groups_assoc = array();
458
 
459
  if ( isset( $_POST['advads-groups-removed-ads'] ) && is_array( $_POST['advads-groups-removed-ads'] ) && isset( $_POST['advads-groups-removed-ads-gid'] ) ) {
460
  $len = count( $_POST['advads-groups-removed-ads'] );
461
  for ( $i = 0; $i < $len; $i ++ ) {
462
- $ad_id = $_POST['advads-groups-removed-ads'][ $i ];
463
- $group_id = $_POST['advads-groups-removed-ads-gid'][ $i ];
464
  $ad_groups_assoc[ $ad_id ] = array();
465
  // remove it from the weights.
466
  if ( isset( $all_weights[ $group_id ] ) && isset( $all_weights[ $group_id ][ $ad_id ] ) ) {
@@ -469,7 +470,7 @@ class Advanced_Ads_Groups_List {
469
  // we need to load all the group ids, that are allocated to this ad and then remove the right one only.
470
  $group_ids = $this->get_groups_by_ad_id( $ad_id );
471
  foreach ( $group_ids as $gid ) {
472
- if ( $gid != $group_id ) {
473
  $ad_groups_assoc[ $ad_id ][] = $gid;
474
  }
475
  }
@@ -478,9 +479,10 @@ class Advanced_Ads_Groups_List {
478
 
479
 
480
  // iterate through groups.
481
- if ( isset( $_POST['advads-groups'] ) && count( $_POST['advads-groups'] ) ) {
 
482
 
483
- foreach ( $_POST['advads-groups'] as $_group_id => $_group ) {
484
 
485
  // save basic wp term.
486
  wp_update_term( $_group_id, Advanced_Ads::AD_GROUP_TAXONOMY, $_group );
@@ -513,7 +515,6 @@ class Advanced_Ads_Groups_List {
513
 
514
  // save ad weights.
515
  $all_weights[ $group->id ] = $group->sanitize_ad_weights( $_group['ads'] );
516
- //$group->save_ad_weights( $_group['ads'] );
517
  }
518
 
519
  // save other attributes.
@@ -522,11 +523,14 @@ class Advanced_Ads_Groups_List {
522
  $options = isset( $_group['options'] ) ? $_group['options'] : array();
523
 
524
  // allow other add-ons to save their own group attributes.
525
- $atts = apply_filters( 'advanced-ads-group-save-atts', array(
526
- 'type' => $type,
527
- 'ad_count' => $ad_count,
528
- 'options' => $options,
529
- ), $_group );
 
 
 
530
 
531
  $group->save( $atts );
532
  }
@@ -556,10 +560,10 @@ class Advanced_Ads_Groups_List {
556
  public static function group_page_url( $args = array() ) {
557
  $plugin = Advanced_Ads::get_instance();
558
 
559
- $defaultargs = array(
560
  'page' => 'advanced-ads-groups',
561
  );
562
- $args = $args + $defaultargs;
563
 
564
  return add_query_arg( $args, admin_url( 'admin.php' ) );
565
  }
82
  }
83
 
84
  /**
85
+ * Render list rows
86
  */
87
  public function render_rows() {
88
  foreach ( $this->groups as $_group ) {
355
 
356
  echo '<div class="row-actions">';
357
  foreach ( $actions as $action => $link ) {
358
+ echo "<span class='" . esc_attr( $action ) . "'>" . wp_kses( $link, array( 'a' => array( 'class' => array(), 'href' => array() ) ) ) . '</span>';
359
  }
360
  echo '</div>';
361
  }
378
 
379
  if ( isset( $_POST['advads-group-name'] ) && '' !== $_POST['advads-group-name'] ) {
380
 
381
+ $title = sanitize_text_field( wp_unslash( $_POST['advads-group-name'] ) );
382
  $new_group = wp_create_term( $title, Advanced_Ads::AD_GROUP_TAXONOMY );
383
 
384
  if ( is_wp_error( $new_group ) ) {
390
  $group = new Advanced_Ads_Group( $new_group['term_id'] );
391
 
392
  // allow other add-ons to save their own group attributes.
393
+ $atts = apply_filters(
394
+ 'advanced-ads-group-save-atts',
395
+ array(
396
+ 'type' => 'default',
397
+ 'ad_count' => 1,
398
+ 'options' => array(),
399
+ ),
400
  $group
401
  );
402
 
455
 
456
  $all_weights = get_option( 'advads-ad-weights', array() );
457
 
 
458
  $ad_groups_assoc = array();
459
 
460
  if ( isset( $_POST['advads-groups-removed-ads'] ) && is_array( $_POST['advads-groups-removed-ads'] ) && isset( $_POST['advads-groups-removed-ads-gid'] ) ) {
461
  $len = count( $_POST['advads-groups-removed-ads'] );
462
  for ( $i = 0; $i < $len; $i ++ ) {
463
+ $ad_id = absint( wp_unslash( $_POST['advads-groups-removed-ads'][ $i ] ) );
464
+ $group_id = absint( wp_unslash( $_POST['advads-groups-removed-ads-gid'][ $i ] ) );
465
  $ad_groups_assoc[ $ad_id ] = array();
466
  // remove it from the weights.
467
  if ( isset( $all_weights[ $group_id ] ) && isset( $all_weights[ $group_id ][ $ad_id ] ) ) {
470
  // we need to load all the group ids, that are allocated to this ad and then remove the right one only.
471
  $group_ids = $this->get_groups_by_ad_id( $ad_id );
472
  foreach ( $group_ids as $gid ) {
473
+ if ( $gid !== $group_id ) {
474
  $ad_groups_assoc[ $ad_id ][] = $gid;
475
  }
476
  }
479
 
480
 
481
  // iterate through groups.
482
+ $post_ad_groups = isset( $_POST['advads-groups'] ) ? wp_unslash( $_POST['advads-groups'] ) : array();
483
+ if ( count( $post_ad_groups ) ) {
484
 
485
+ foreach ( $post_ad_groups as $_group_id => $_group ) {
486
 
487
  // save basic wp term.
488
  wp_update_term( $_group_id, Advanced_Ads::AD_GROUP_TAXONOMY, $_group );
515
 
516
  // save ad weights.
517
  $all_weights[ $group->id ] = $group->sanitize_ad_weights( $_group['ads'] );
 
518
  }
519
 
520
  // save other attributes.
523
  $options = isset( $_group['options'] ) ? $_group['options'] : array();
524
 
525
  // allow other add-ons to save their own group attributes.
526
+ $atts = apply_filters( 'advanced-ads-group-save-atts',
527
+ array(
528
+ 'type' => $type,
529
+ 'ad_count' => $ad_count,
530
+ 'options' => $options,
531
+ ),
532
+ $_group
533
+ );
534
 
535
  $group->save( $atts );
536
  }
560
  public static function group_page_url( $args = array() ) {
561
  $plugin = Advanced_Ads::get_instance();
562
 
563
+ $default_args = array(
564
  'page' => 'advanced-ads-groups',
565
  );
566
+ $args = $args + $default_args;
567
 
568
  return add_query_arg( $args, admin_url( 'admin.php' ) );
569
  }
admin/includes/class-ad-network-ad-importer.php CHANGED
@@ -1,17 +1,27 @@
1
  <?php
2
- abstract class Advanced_Ads_Ad_Network_Ad_Importer{
3
- protected $ad_network;
4
 
5
- /**
6
- * Advanced_Ads_Ad_Network_Ad_Importer constructor.
7
- * @param $ad_network
8
- */
9
- public function __construct($ad_network)
10
- {
11
- $this->ad_network = $ad_network;
12
- }
13
 
14
- public function render(){
 
 
 
 
 
15
 
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  }
1
  <?php
 
 
2
 
3
+ abstract class Advanced_Ads_Ad_Network_Ad_Importer {
 
 
 
 
 
 
 
4
 
5
+ /**
6
+ * Ad network
7
+ *
8
+ * @var
9
+ */
10
+ protected $ad_network;
11
 
12
+ /**
13
+ * Advanced_Ads_Ad_Network_Ad_Importer constructor.
14
+ *
15
+ * @param $ad_network
16
+ */
17
+ public function __construct( $ad_network ) {
18
+ $this->ad_network = $ad_network;
19
+ }
20
+
21
+ /**
22
+ * Render network
23
+ */
24
+ public function render() {
25
+
26
+ }
27
  }
admin/includes/class-ad-network-ad-unit.php CHANGED
@@ -4,58 +4,96 @@
4
  * Class Advanced_Ads_Ad_Network_Ad_Unit
5
  * This represents an external ad unit. Will be used for importing external ads from various ad networks.
6
  */
7
- class Advanced_Ads_Ad_Network_Ad_Unit{
8
- /**
9
- * @var contains the raw data (typically from a JSON response) for this ad unit
10
- */
11
- public $raw;
12
-
13
- /**
14
- * @var the (external) id of this ad unit (e.g. pub-ca... for adsense)
15
- */
16
-
17
- public $id;
18
- /**
19
- * @var the display name of the ad
20
- */
21
- public $name;
22
-
23
- /**
24
- * @var the type of this ad unit (displayed in list)
25
- */
26
- public $display_type;
27
-
28
- /**
29
- * @var the size of this ad unit (displayed in list)
30
- */
31
- public $display_size;
32
-
33
- /**
34
- * @var in case of an adsense ad, this is the id of the ad without the publisher id
35
- * the value will be displayed in the ads list
36
- */
37
- public $slot_id;
38
-
39
- /**
40
- * @var a bool that indicates wheter an ad is active (inactives will be hidden by default)
41
- */
42
- public $active;
43
-
44
- public function __construct($raw) {
45
- $this->raw = $raw;
46
- }
47
-
48
- public static function sort_ad_units(array &$ad_units, $selected_id){
49
- usort($ad_units, function($a, $b) use ($selected_id){
50
- if ($a->id == $selected_id) return -1;
51
- if ($b->id == $selected_id) return 1;
52
- if ($a->is_supported){
53
- if (!$b->is_supported) return -1;
54
- }
55
- else if ($b->is_supported) return 1;
56
- return strcmp($a->name, $b->name);
57
- });
58
-
59
- return $ad_units;
60
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  }
4
  * Class Advanced_Ads_Ad_Network_Ad_Unit
5
  * This represents an external ad unit. Will be used for importing external ads from various ad networks.
6
  */
7
+ class Advanced_Ads_Ad_Network_Ad_Unit {
8
+ /**
9
+ * Contains the raw data (typically from a JSON response) for this ad unit
10
+ *
11
+ * @var string
12
+ */
13
+ public $raw;
14
+
15
+ /**
16
+ * The (external) id of this ad unit (e.g. pub-ca... for adsense)
17
+ *
18
+ * @var string
19
+ */
20
+ public $id;
21
+
22
+ /**
23
+ * The display name of the ad
24
+ *
25
+ * @var string
26
+ */
27
+ public $name;
28
+
29
+ /**
30
+ * The type of this ad unit (displayed in list)
31
+ *
32
+ * @var string
33
+ */
34
+ public $display_type;
35
+
36
+ /**
37
+ * The size of this ad unit (displayed in list)
38
+ *
39
+ * @var string
40
+ */
41
+ public $display_size;
42
+
43
+ /**
44
+ * In case of an AdSense ad, this is the id of the ad without the publisher id
45
+ * the value will be displayed in the ads list
46
+ *
47
+ * @var string
48
+ */
49
+ public $slot_id;
50
+
51
+ /**
52
+ * A bool that indicates whether an ad is active (inactives will be hidden by default)
53
+ *
54
+ * @var bool
55
+ */
56
+ public $active;
57
+
58
+ /**
59
+ * Advanced_Ads_Ad_Network_Ad_Unit constructor.
60
+ *
61
+ * @param string $raw raw ad data.
62
+ */
63
+ public function __construct( $raw ) {
64
+ $this->raw = $raw;
65
+ }
66
+
67
+ /**
68
+ * Sort multiple ad units.
69
+ *
70
+ * @param array $ad_units array of ad units.
71
+ * @param string $selected_id ID of the selected ad. Can be taken from the ad network and therefore also a string.
72
+ *
73
+ * @return array
74
+ */
75
+ public static function sort_ad_units( array &$ad_units, $selected_id ) {
76
+ usort(
77
+ $ad_units,
78
+ function ( $a, $b ) use ( $selected_id ) {
79
+ if ( $a->id == $selected_id ) {
80
+ return - 1;
81
+ }
82
+ if ( $b->id == $selected_id ) {
83
+ return 1;
84
+ }
85
+ if ( $a->is_supported ) {
86
+ if ( ! $b->is_supported ) {
87
+ return - 1;
88
+ }
89
+ } elseif ( $b->is_supported ) {
90
+ return 1;
91
+ }
92
+
93
+ return strcmp( $a->name, $b->name );
94
+ }
95
+ );
96
+
97
+ return $ad_units;
98
+ }
99
  }
admin/includes/class-ad-network.php CHANGED
@@ -1,367 +1,466 @@
1
  <?php
 
2
  /**
3
  * Class Advanced_Ads_Ad_Network
4
  */
5
- abstract class Advanced_Ads_Ad_Network{
6
- /**
7
- * @var string The identifier will be used for generated ids, names etc.
8
- */
9
- protected $identifier;
10
-
11
- /**
12
- * @var string The name of the ad network
13
- */
14
- protected $name;
15
-
16
- /**
17
- * @var string the name of the hook for the advanced ads settings page
18
- */
19
- protected $settings_page_hook;
20
-
21
- /**
22
- * @var the wordpress nonce (retrieve with the get_nonce method)
23
- */
24
- protected $nonce;
25
-
26
- /**
27
- * Advanced_Ads_Ad_Network constructor.
28
- * @param $identifier an identifier that will be used for hooks, settings, ids and much more - MAKE SURE IT IS UNIQUE!
29
- * @param $name - the (translateable) display name for this ad network
30
- */
31
- public function __construct($identifier, $name){
32
- $this->identifier = $identifier;
33
- $this->name = $name;
34
- $this->settings_page_hook = ADVADS_SLUG . '-' . $this->identifier . '-settings-page';
35
- $this->settings_section_id = ADVADS_SLUG . '-' . $this->identifier . '-settings-section';
36
- $this->settings_init_hook = ADVADS_SLUG . '-' . $this->identifier . '-settings-init';
37
- }
38
-
39
- /**
40
- * @return string the identifier for this network
41
- */
42
- public function get_identifier() {
43
- return $this->identifier;
44
- }
45
-
46
- /**
47
- * @return string the display name for this network
48
- */
49
- public function get_display_name(){
50
- return $this->name;
51
- }
52
-
53
- /**
54
- * @return string the display value for the settings tab
55
- */
56
- public function get_settings_tab_name(){
57
- return $this->get_display_name();
58
- }
59
-
60
- /**
61
- * @return string url for the settings page (admin)
62
- */
63
- public function get_settings_href(){
64
- return admin_url( 'admin.php?page=advanced-ads-settings#top#' . $this->identifier );
65
- }
66
-
67
- /**
68
- * @return string the identifier / name for the javascript file that will be injected.
69
- */
70
- public function get_js_library_name(){
71
- return "advanced-ads-network" . $this->identifier;
72
- }
73
-
74
- /**
75
- * registers this ad network
76
- */
77
- public function register(){
78
- // register the ad type
79
- add_filter('advanced-ads-ad-types', array($this, 'register_ad_type_callback'));
80
-
81
- if (is_admin()) {
82
- if (defined('DOING_AJAX') && DOING_AJAX){
83
- // we need add all the actions for our ajax calls here.
84
- // our ajax method that will trigger an update of the ad units of this network
85
- add_action('wp_ajax_advanced_ads_get_ad_units_' . $this->identifier, array($this, 'update_external_ad_units'));
86
- add_action('wp_ajax_advanced_ads_toggle_idle_ads_' . $this->identifier, array( $this, 'toggle_idle_ads'));
87
- } else {
88
- // find out if we need to register the settings. this is necessary
89
- // 1) when viewing the settings (admin.php with page="advanced-ads-settings")
90
- // 2) when posting the settings to options.php
91
- // in all other cases, there is nothing to do
92
- global $pagenow;
93
- $requires_settings = false;
94
- $requires_javascript = false;
95
-
96
- if ($pagenow == "admin.php") {
97
- $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null;
98
- switch ($page){
99
- case "advanced-ads-settings":
100
- $requires_settings = true;
101
- $requires_javascript = true;
102
- break;
103
- case "advanced-ads":
104
- $requires_javascript = true;
105
- default:
106
- break;
107
- }
108
- }
109
- else if ($pagenow == "options.php") {
110
- $requires_settings = true;
111
- }
112
- else if ($pagenow == 'post.php' || $pagenow == 'post-new.php'){
113
- $post_type = isset($_REQUEST['post_type']) ? $_REQUEST['post_type'] : '';
114
- add_filter('advanced-ads-ad-settings-pre-save', array($this, 'sanitize_ad_settings'));
115
-
116
- if (isset($_GET['action']) && 'edit' == $_GET['action']){
117
- $requires_javascript = true;
118
- }
119
- else if ($post_type == "advanced_ads"){
120
- $requires_javascript = true;
121
- }
122
- }
123
-
124
- if ($requires_settings) {
125
- // register the settings
126
- add_action('advanced-ads-settings-init', array($this, 'register_settings_callback'));
127
- add_filter('advanced-ads-setting-tabs', array($this, 'register_settings_tabs_callback'));
128
- }
129
- if ($requires_javascript){
130
- add_action( 'admin_enqueue_scripts', array($this, 'enqueue_scripts_callback') );
131
- }
132
- }
133
- }
134
- }
135
-
136
- /**
137
- * the callback method for the filter "advanced-ads-ad-types"
138
- * @param $types
139
- */
140
- public function register_ad_type_callback($types){
141
- $types[$this->identifier] = $this->get_ad_type();
142
- return $types;
143
- }
144
- /**
145
- * this method will be called for the wp action "advanced-ads-settings-init" and therefore has to be public.
146
- */
147
- public function register_settings_callback(){
148
- // register new settings
149
- register_setting( ADVADS_SLUG . '-' . $this->identifier,
150
- ADVADS_SLUG . '-' . $this->identifier,
151
- array($this, 'sanitize_settings_callback')
152
- );
153
-
154
- // add a new section
155
- add_settings_section(
156
- $this->settings_section_id,
157
- '', //__( 'AdSense', 'advanced-ads' ),
158
- array($this, 'render_settings_callback'),
159
- $this->settings_page_hook
160
- );
161
-
162
- // register all the custom settings
163
- $this->register_settings($this->settings_page_hook, $this->settings_section_id);
164
-
165
- do_action($this->settings_init_hook, $this->settings_page_hook);
166
- }
167
-
168
- protected function get_localized_script_object_name(){
169
- return $this->identifier . 'AdvancedAdsJS';
170
- }
171
- public function enqueue_scripts_callback(){
172
-
173
- if ( ! Advanced_Ads_Admin::screen_belongs_to_advanced_ads() ){
174
- return;
175
- }
176
-
177
- $js_path = $this->get_javascript_base_path();
178
- if ($js_path) {
179
- $id = $this->get_js_library_name();
180
- wp_enqueue_script($id, $js_path, array('jquery'));
181
- // next we have to pass the data.
182
- $data = array(
183
- 'nonce' => $this->get_nonce()
184
- );
185
- $data = $this->append_javascript_data($data);
186
- wp_localize_script($id, $this->get_localized_script_object_name(), $data);
187
- }
188
- }
189
-
190
- /**
191
- * @return string
192
- */
193
- public function get_nonce(){
194
- if (! $this->nonce)
195
- $this->nonce = wp_create_nonce($this->get_nonce_action());
196
- return $this->nonce;
197
- }
198
-
199
- /**
200
- * returns the action (name) of the nonce for this network
201
- * in some cases you may want to override this method to faciliate
202
- * integration with existing code
203
- * @return string
204
- */
205
- public function get_nonce_action(){
206
- return 'advads-network-' . $this->identifier;
207
- }
208
-
209
- /**
210
- * this method will be called for the wp action "advanced-ads-settings-tabs" and therefore has to be public.
211
- * it simply adds a tab for this ad type. if you don't want that just override this method with an empty one.
212
- */
213
- public function register_settings_tabs_callback($tabs){
214
- $tab_id = $this->identifier;
215
- $tabs[$tab_id] = array(
216
- 'page' => $this->settings_page_hook,
217
- 'group' => ADVADS_SLUG . '-' . $this->identifier,
218
- 'tabid' => $tab_id,
219
- 'title' => $this->get_settings_tab_name()
220
- );
221
- return $tabs;
222
- }
223
-
224
- public function render_settings_callback(){
225
-
226
- }
227
-
228
- public function sanitize_settings_callback($options){
229
- $options = $this->sanitize_settings($options);
230
- return $options;
231
- }
232
-
233
- public function sanitize_ad_settings_callback( array $ad_settings_post ){
234
- return $this->sanitize_ad_settings($ad_settings_post);
235
- }
236
-
237
- /**
238
- * performs basic security checks for wp ajax requests (nonce, capabilities)
239
- * dies, when a problem was detected
240
- */
241
- protected function ajax_security_checks(){
242
- if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options' ) ) ) {
243
- //TODO: translate
244
- $this->send_ajax_error_response_and_die("You don't have the permission to manage ads.");
245
- }
246
- $nonce = isset( $_REQUEST['nonce'] ) ? $_REQUEST['nonce'] : '';
247
- if ( ! wp_verify_nonce( $nonce, $this->get_nonce_action() ) ) {
248
- //TODO: translate
249
- $this->send_ajax_error_response_and_die("You sent an invalid request.");
250
- }
251
- }
252
-
253
- protected function send_ajax_response_and_die($json_serializable_response = false){
254
- if (!$json_serializable_response) $json_serializable_response = new stdClass();
255
- header( 'Content-Type: application/json' );
256
- echo json_encode($json_serializable_response);
257
- die();
258
- }
259
-
260
- protected function send_ajax_error_response_and_die($message){
261
- header( 'Content-Type: application/json' );
262
- $r = new stdClass();
263
- $r->error = $message;
264
- echo json_encode($r);
265
- die();
266
- }
267
-
268
- public function toggle_idle_ads(){
269
- $this->ajax_security_checks();
270
- global $external_ad_unit_id;
271
- $hide_idle_ads = isset($_POST['hide']) ? $_POST['hide'] : false;
272
- $external_ad_unit_id = isset($_POST['ad_unit_id']) ? $_POST['ad_unit_id'] : "";
273
- if (!$external_ad_unit_id) $external_ad_unit_id = "";
274
- ob_start();
275
-
276
- $this->print_external_ads_list($hide_idle_ads);
277
- $ad_selector = ob_get_clean();
278
-
279
- $response = array(
280
- 'status' => true,
281
- 'html' => $ad_selector,
282
- );
283
- $this->send_ajax_response_and_die($response);
284
- }
285
-
286
- /**
287
- * when you need some kind of manual ad setup (meaning you can edit the custom inputs of this ad type)
288
- * you should override this method to return true. this results in an additional link (Setup code manually)
289
- * @return bool
290
- */
291
- public function supports_manual_ad_setup(){
292
- return false;
293
- }
294
-
295
- public abstract function print_external_ads_list($hide_idle_ads = true);
296
-
297
- /**
298
- * retrieves an instance of the ad type for this ad network
299
- */
300
- public abstract function get_ad_type();
301
-
302
- /**
303
- * this method will be called via wp AJAX.
304
- * it has to retrieve the list of ads from the ad network and store it as an option
305
- * does not return ad units - use "get_external_ad_units" if you're looking for an array of ad units
306
- */
307
- public abstract function update_external_ad_units();
308
-
309
- /**
310
- * adds the custom wp settings to the tab for this ad unit
311
- */
312
- protected abstract function register_settings($hook, $section_id);
313
-
314
- /**
315
- * sanitize the network specific options
316
- * @param $options the options to sanitize
317
- * @return mixed the sanitizzed options
318
- */
319
- protected abstract function sanitize_settings($options);
320
-
321
- /**
322
- * sanitize the settings for this ad network
323
- * @param $ad_settings_post
324
- * @return mixed the sanitized settings
325
- */
326
- public abstract function sanitize_ad_settings($ad_settings_post);
327
-
328
-
329
-
330
- /**
331
- * @return array of ad units (Advanced_Ads_Ad_Network_Ad_Unit)
332
- */
333
- public abstract function get_external_ad_units();
334
-
335
- /**
336
- * checks if the ad_unit is supported by advanced ads.
337
- * this determines wheter it can be imported or not.
338
- * @param $ad_unit
339
- * @return boolean
340
- */
341
- public abstract function is_supported($ad_unit);
342
-
343
- /**
344
- * there is no common way to connect to an external account. you will have to implement it somehow, just
345
- * like the whole setup process (usually done in the settings tab of this network). this method provides
346
- * a way to return this account connection
347
- * @return boolean true, when an account was successfully connected
348
- */
349
- public abstract function is_account_connected();
350
-
351
- /**
352
- * external ad networks rely on the same javascript base code. however you still have to provide
353
- * a javascript class that inherits from the AdvancedAdsAdNetwork js class
354
- * this has to point to that file, or return false,
355
- * if you don't have to include it in another way (NOT RECOMMENDED!)
356
- * @return string path to the javascript file containing the javascriot class for this ad type
357
- */
358
- public abstract function get_javascript_base_path();
359
-
360
- /**
361
- * our script might need translations or other variables (llike a nonce, which is included automatically)
362
- * add anything you need in this method and return the array
363
- * @param $data array holding the data
364
- * @return array the data, that will be passed to the base javascript file containing the AdvancedAdsAdNetwork class
365
- */
366
- public abstract function append_javascript_data(&$data);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
367
  }
1
  <?php
2
+
3
  /**
4
  * Class Advanced_Ads_Ad_Network
5
  */
6
+ abstract class Advanced_Ads_Ad_Network {
7
+ /**
8
+ * The identifier will be used for generated ids, names etc.
9
+ *
10
+ * @var string
11
+ */
12
+ protected $identifier;
13
+
14
+ /**
15
+ * The name of the ad network
16
+ *
17
+ * @var string
18
+ */
19
+ protected $name;
20
+
21
+ /**
22
+ * The name of the hook for the advanced ads settings page
23
+ *
24
+ * @var string
25
+ */
26
+ protected $settings_page_hook;
27
+
28
+ /**
29
+ * The WordPress nonce (retrieve with the get_nonce method)
30
+ *
31
+ * @var string
32
+ */
33
+ protected $nonce;
34
+
35
+ /**
36
+ * Advanced_Ads_Ad_Network constructor.
37
+ *
38
+ * @param string $identifier an identifier that will be used for hooks, settings, ids and much more - MAKE SURE IT IS UNIQUE.
39
+ * @param string $name - the (translateable) display name for this ad network.
40
+ */
41
+ public function __construct( $identifier, $name ) {
42
+ $this->identifier = $identifier;
43
+ $this->name = $name;
44
+ $this->settings_page_hook = ADVADS_SLUG . '-' . $this->identifier . '-settings-page';
45
+ $this->settings_section_id = ADVADS_SLUG . '-' . $this->identifier . '-settings-section';
46
+ $this->settings_init_hook = ADVADS_SLUG . '-' . $this->identifier . '-settings-init';
47
+ }
48
+
49
+ /**
50
+ * The identifier for this network
51
+ *
52
+ * @return string
53
+ */
54
+ public function get_identifier() {
55
+ return $this->identifier;
56
+ }
57
+
58
+ /**
59
+ * The display name for this network
60
+ *
61
+ * @return string
62
+ */
63
+ public function get_display_name() {
64
+ return $this->name;
65
+ }
66
+
67
+ /**
68
+ * The display value for the settings tab
69
+ *
70
+ * @return string
71
+ */
72
+ public function get_settings_tab_name() {
73
+ return $this->get_display_name();
74
+ }
75
+
76
+ /**
77
+ * URL for the settings page (admin)
78
+ *
79
+ * @return string
80
+ */
81
+ public function get_settings_href() {
82
+ return admin_url( 'admin.php?page=advanced-ads-settings#top#' . $this->identifier );
83
+ }
84
+
85
+ /**
86
+ * The identifier / name for the javascript file that will be injected.
87
+ *
88
+ * @return string
89
+ */
90
+ public function get_js_library_name() {
91
+ return 'advanced-ads-network' . $this->identifier;
92
+ }
93
+
94
+ /**
95
+ * Registers this ad network
96
+ */
97
+ public function register() {
98
+ // register the ad type.
99
+ add_filter( 'advanced-ads-ad-types', array( $this, 'register_ad_type_callback' ) );
100
+
101
+ if ( is_admin() ) {
102
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
103
+ // we need add all the actions for our ajax calls here.
104
+ // our ajax method that will trigger an update of the ad units of this network.
105
+ add_action( 'wp_ajax_advanced_ads_get_ad_units_' . $this->identifier, array( $this, 'update_external_ad_units' ) );
106
+ add_action( 'wp_ajax_advanced_ads_toggle_idle_ads_' . $this->identifier, array( $this, 'toggle_idle_ads' ) );
107
+ } else {
108
+ // find out if we need to register the settings. this is necessary
109
+ // 1) when viewing the settings (admin.php with page="advanced-ads-settings")
110
+ // 2) when posting the settings to options.php
111
+ // in all other cases, there is nothing to do.
112
+ global $pagenow;
113
+ $requires_settings = false;
114
+ $requires_javascript = false;
115
+
116
+ if ( 'admin.php' === $pagenow ) {
117
+ $page = isset( $_REQUEST['page'] ) ? $_REQUEST['page'] : null;
118
+ switch ( $page ) {
119
+ case 'advanced-ads-settings':
120
+ $requires_settings = true;
121
+ $requires_javascript = true;
122
+ break;
123
+ case 'advanced-ads':
124
+ $requires_javascript = true;
125
+ default:
126
+ break;
127
+ }
128
+ } elseif ( 'options.php' === $pagenow ) {
129
+ $requires_settings = true;
130
+ } elseif ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) {
131
+ $post_type = isset( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : '';
132
+ add_filter( 'advanced-ads-ad-settings-pre-save', array( $this, 'sanitize_ad_settings' ) );
133
+
134
+ if ( isset( $_GET['action'] ) && 'edit' === $_GET['action'] ) {
135
+ $requires_javascript = true;
136
+ } elseif ( 'advanced_ads' === $post_type ) {
137
+ $requires_javascript = true;
138
+ }
139
+ }
140
+
141
+ if ( $requires_settings ) {
142
+ // register the settings.
143
+ add_action( 'advanced-ads-settings-init', array( $this, 'register_settings_callback' ) );
144
+ add_filter( 'advanced-ads-setting-tabs', array( $this, 'register_settings_tabs_callback' ) );
145
+ }
146
+ if ( $requires_javascript ) {
147
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts_callback' ) );
148
+ }
149
+ }
150
+ }
151
+ }
152
+
153
+ /**
154
+ * The callback method for the filter "advanced-ads-ad-types"
155
+ *
156
+ * @param array $types ad types.
157
+ *
158
+ * @return array
159
+ */
160
+ public function register_ad_type_callback( $types ) {
161
+ $types[ $this->identifier ] = $this->get_ad_type();
162
+
163
+ return $types;
164
+ }
165
+
166
+ /**
167
+ * This method will be called for the wp action "advanced-ads-settings-init" and therefore has to be public.
168
+ */
169
+ public function register_settings_callback() {
170
+ // register new settings.
171
+ register_setting(
172
+ ADVADS_SLUG . '-' . $this->identifier,
173
+ ADVADS_SLUG . '-' . $this->identifier,
174
+ array( $this, 'sanitize_settings_callback' )
175
+ );
176
+
177
+ // add a new section.
178
+ add_settings_section(
179
+ $this->settings_section_id,
180
+ '',
181
+ array( $this, 'render_settings_callback' ),
182
+ $this->settings_page_hook
183
+ );
184
+
185
+ // register all the custom settings.
186
+ $this->register_settings( $this->settings_page_hook, $this->settings_section_id );
187
+
188
+ do_action( $this->settings_init_hook, $this->settings_page_hook );
189
+ }
190
+
191
+ /**
192
+ * Create name of the object used for localized data
193
+ *
194
+ * @return string
195
+ */
196
+ protected function get_localized_script_object_name() {
197
+ return $this->identifier . 'AdvancedAdsJS';
198
+ }
199
+
200
+ /**
201
+ * Engueue scripts
202
+ */
203
+ public function enqueue_scripts_callback() {
204
+
205
+ if ( ! Advanced_Ads_Admin::screen_belongs_to_advanced_ads() ) {
206
+ return;
207
+ }
208
+
209
+ $js_path = $this->get_javascript_base_path();
210
+ if ( $js_path ) {
211
+ $id = $this->get_js_library_name();
212
+ wp_enqueue_script( $id, $js_path, array( 'jquery' ) );
213
+ // next we have to pass the data.
214
+ $data = array(
215
+ 'nonce' => $this->get_nonce(),
216
+ );
217
+ $data = $this->append_javascript_data( $data );
218
+ wp_localize_script( $id, $this->get_localized_script_object_name(), $data );
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Get a nonce
224
+ *
225
+ * @return string
226
+ */
227
+ public function get_nonce() {
228
+ if ( ! $this->nonce ) {
229
+ $this->nonce = wp_create_nonce( $this->get_nonce_action() );
230
+ }
231
+
232
+ return $this->nonce;
233
+ }
234
+
235
+ /**
236
+ * Returns the action (name) of the nonce for this network
237
+ * in some cases you may want to override this method to faciliate
238
+ * integration with existing code
239
+ *
240
+ * @return string
241
+ */
242
+ public function get_nonce_action() {
243
+ return 'advads-network-' . $this->identifier;
244
+ }
245
+
246
+ /**
247
+ * This method will be called for the wp action "advanced-ads-settings-tabs" and therefore has to be public.
248
+ * it simply adds a tab for this ad type. if you don't want that just override this method with an empty one.
249
+ *
250
+ * @param array $tabs tabs on Advanced Ads settings page.
251
+ *
252
+ * @return array
253
+ */
254
+ public function register_settings_tabs_callback( $tabs ) {
255
+ $tab_id = $this->identifier;
256
+ $tabs[ $tab_id ] = array(
257
+ 'page' => $this->settings_page_hook,
258
+ 'group' => ADVADS_SLUG . '-' . $this->identifier,
259
+ 'tabid' => $tab_id,
260
+ 'title' => $this->get_settings_tab_name(),
261
+ );
262
+
263
+ return $tabs;
264
+ }
265
+
266
+ /**
267
+ * Render settings page
268
+ */
269
+ public function render_settings_callback() {
270
+
271
+ }
272
+
273
+ /**
274
+ * Callback to sanitize settings
275
+ *
276
+ * @param array $options options to be sanitized.
277
+ *
278
+ * @return mixed
279
+ */
280
+ public function sanitize_settings_callback( $options ) {
281
+ $options = $this->sanitize_settings( $options );
282
+
283
+ return $options;
284
+ }
285
+
286
+ /**
287
+ * Callback to sanitize settings for an individual ad
288
+ *
289
+ * @param array $ad_settings_post post data from the ad settings form.
290
+ *
291
+ * @return mixed
292
+ */
293
+ public function sanitize_ad_settings_callback( array $ad_settings_post ) {
294
+ return $this->sanitize_ad_settings( $ad_settings_post );
295
+ }
296
+
297
+ /**
298
+ * Performs basic security checks for wp ajax requests (nonce, capabilities)
299
+ * dies, when a problem was detected
300
+ */
301
+ protected function ajax_security_checks() {
302
+ if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options' ) ) ) {
303
+ // TODO: translate.
304
+ $this->send_ajax_error_response_and_die( "You don't have the permission to manage ads." );
305
+ }
306
+ $nonce = isset( $_REQUEST['nonce'] ) ? $_REQUEST['nonce'] : '';
307
+ if ( ! wp_verify_nonce( $nonce, $this->get_nonce_action() ) ) {
308
+ // TODO: translate.
309
+ $this->send_ajax_error_response_and_die( 'You sent an invalid request.' );
310
+ }
311
+ }
312
+
313
+ /**
314
+ * Send data via AJAX but don’t react on it.
315
+ *
316
+ * @param bool $json_serializable_response true if data can be serialized.
317
+ */
318
+ protected function send_ajax_response_and_die( $json_serializable_response = false ) {
319
+ if ( ! $json_serializable_response ) {
320
+ $json_serializable_response = new stdClass();
321
+ }
322
+ header( 'Content-Type: application/json' );
323
+ echo wp_json_encode( $json_serializable_response );
324
+ die();
325
+ }
326
+
327
+ /**
328
+ * Send message via AJAX but don’t react on it.
329
+ *
330
+ * @param string $message message string.
331
+ */
332
+ protected function send_ajax_error_response_and_die( $message ) {
333
+ header( 'Content-Type: application/json' );
334
+ $r = new stdClass();
335
+ $r->error = $message;
336
+ echo wp_json_encode( $r );
337
+ die();
338
+ }
339
+
340
+ /**
341
+ * Toggle ad IDs
342
+ */
343
+ public function toggle_idle_ads() {
344
+ $this->ajax_security_checks();
345
+ global $external_ad_unit_id;
346
+ $hide_idle_ads = isset( $_POST['hide'] ) ? $_POST['hide'] : false;
347
+ $external_ad_unit_id = isset( $_POST['ad_unit_id'] ) ? $_POST['ad_unit_id'] : "";
348
+ if ( ! $external_ad_unit_id ) {
349
+ $external_ad_unit_id = '';
350
+ }
351
+ ob_start();
352
+
353
+ $this->print_external_ads_list( $hide_idle_ads );
354
+ $ad_selector = ob_get_clean();
355
+
356
+ $response = array(
357
+ 'status' => true,
358
+ 'html' => $ad_selector,
359
+ );
360
+ $this->send_ajax_response_and_die( $response );
361
+ }
362
+
363
+ /**
364
+ * When you need some kind of manual ad setup (meaning you can edit the custom inputs of this ad type)
365
+ * you should override this method to return true. this results in an additional link (Setup code manually)
366
+ *
367
+ * @return bool
368
+ */
369
+ public function supports_manual_ad_setup() {
370
+ return false;
371
+ }
372
+
373
+ /**
374
+ * Print a list of ads.
375
+ *
376
+ * @param bool $hide_idle_ads true to hide idle ids.
377
+ *
378
+ * @return mixed
379
+ */
380
+ abstract public function print_external_ads_list( $hide_idle_ads = true );
381
+
382
+ /**
383
+ * Retrieves an instance of the ad type for this ad network
384
+ */
385
+ abstract public function get_ad_type();
386
+
387
+ /**
388
+ * This method will be called via wp AJAX.
389
+ * it has to retrieve the list of ads from the ad network and store it as an option
390
+ * does not return ad units - use "get_external_ad_units" if you're looking for an array of ad units
391
+ */
392
+ abstract public function update_external_ad_units();
393
+
394
+ /**
395
+ * Adds the custom wp settings to the tab for this ad unit
396
+ *
397
+ * @param string $hook hook for the settings page.
398
+ * @param string $section_id settings section ID.
399
+ */
400
+ abstract protected function register_settings( $hook, $section_id );
401
+
402
+ /**
403
+ * Sanitize the network specific options
404
+ *
405
+ * @param array $options the options to sanitize.
406
+ *
407
+ * @return mixed the sanitizzed options
408
+ */
409
+ abstract protected function sanitize_settings( $options );
410
+
411
+ /**
412
+ * Sanitize the settings for this ad network
413
+ *
414
+ * @param array $ad_settings_post ad settings in POST format.
415
+ *
416
+ * @return mixed the sanitized settings
417
+ */
418
+ abstract public function sanitize_ad_settings( $ad_settings_post );
419
+
420
+
421
+ /**
422
+ * Get external ad units from the given network.
423
+ *
424
+ * @return array of ad units (Advanced_Ads_Ad_Network_Ad_Unit)
425
+ */
426
+ abstract public function get_external_ad_units();
427
+
428
+ /**
429
+ * Checks if the ad_unit is supported by Advanced Ads.
430
+ * this determines wheter it can be imported or not.
431
+ *
432
+ * @param object $ad_unit ad unit.
433
+ *
434
+ * @return boolean
435
+ */
436
+ abstract public function is_supported( $ad_unit );
437
+
438
+ /**
439
+ * There is no common way to connect to an external account. you will have to implement it somehow, just
440
+ * like the whole setup process (usually done in the settings tab of this network). this method provides
441
+ * a way to return this account connection
442
+ *
443
+ * @return boolean true, when an account was successfully connected
444
+ */
445
+ abstract public function is_account_connected();
446
+
447
+ /**
448
+ * External ad networks rely on the same javascript base code. however you still have to provide
449
+ * a javascript class that inherits from the AdvancedAdsAdNetwork js class
450
+ * this has to point to that file, or return false,
451
+ * if you don't have to include it in another way (NOT RECOMMENDED!)
452
+ *
453
+ * @return string path to the javascript file containing the javascriot class for this ad type
454
+ */
455
+ abstract public function get_javascript_base_path();
456
+
457
+ /**
458
+ * Our script might need translations or other variables (llike a nonce, which is included automatically)
459
+ * add anything you need in this method and return the array
460
+ *
461
+ * @param array $data holding the data.
462
+ *
463
+ * @return array the data, that will be passed to the base javascript file containing the AdvancedAdsAdNetwork class
464
+ */
465
+ abstract public function append_javascript_data( &$data );
466
  }
admin/includes/class-ad-type.php CHANGED
@@ -25,103 +25,152 @@ class Advanced_Ads_Admin_Ad_Type {
25
  */
26
  private function __construct() {
27
  // registering custom columns needs to work with and without DOING_AJAX.
28
- add_filter( 'manage_advanced_ads_posts_columns', array(
29
- $this,
30
- 'ad_list_columns_head',
31
- ) ); // extra column.
32
- add_filter( 'manage_advanced_ads_posts_custom_column', array(
33
- $this,
34
- 'ad_list_columns_content',
35
- ), 10, 2 ); // extra column.
36
- add_filter( 'manage_advanced_ads_posts_custom_column', array(
37
- $this,
38
- 'ad_list_columns_timing',
39
- ), 10, 2 ); // extra column.
40
- add_filter( 'manage_advanced_ads_posts_custom_column', array(
41
- $this,
42
- 'ad_list_columns_shortcode',
43
- ), 10, 2 ); // extra column.
44
- add_action( 'restrict_manage_posts', array(
45
- $this,
46
- 'ad_list_add_filters',
47
- ) );
48
- add_filter( 'default_hidden_columns', array(
49
- $this,
50
- 'hide_ad_list_columns',
51
- ), 10, 2 ); // hide the ad shortcode column by default.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
  // ad updated messages.
54
- add_filter( 'bulk_post_updated_messages', array(
55
- $this,
56
- 'ad_bulk_update_messages',
57
- ), 10, 2 );
 
 
 
 
58
 
59
  // handling (ad) lists.
60
- add_filter( 'request', array(
61
- $this,
62
- 'ad_list_request',
63
- ) ); // order ads by title, not ID.
64
- add_action( 'all_admin_notices', array(
65
- $this,
66
- 'no_ads_yet_notice',
67
- ) );
68
-
 
 
 
69
  // save ads post type.
70
- add_action( 'save_post', array(
71
- $this,
72
- 'save_ad',
73
- ) );
 
 
74
  // delete ads post type.
75
- add_action( 'delete_post', array(
76
- $this,
77
- 'delete_ad',
78
- ) );
79
-
 
80
  // on post/ad edit screen.
81
- add_action( 'edit_form_top', array(
82
- $this,
83
- 'edit_form_above_title',
84
- ) );
85
- add_action( 'edit_form_after_title', array(
86
- $this,
87
- 'edit_form_below_title',
88
- ) );
89
- add_action( 'dbx_post_sidebar', array(
90
- $this,
91
- 'edit_form_end',
92
- ) );
93
- add_action( 'post_submitbox_misc_actions', array(
94
- $this,
95
- 'add_submit_box_meta',
96
- ) );
97
- add_action( 'admin_enqueue_scripts', array(
98
- $this,
99
- 'use_code_editor',
100
- ) );
101
-
 
 
 
 
 
 
 
 
 
102
  // ad updated messages.
103
- add_filter( 'post_updated_messages', array(
104
- $this,
105
- 'ad_update_messages',
106
- ) );
107
-
108
- $this->post_type = constant( 'Advanced_Ads::POST_TYPE_SLUG' );
109
-
110
- add_filter( 'gettext', array(
111
- $this,
112
- 'replace_cheating_message',
113
- ), 20, 2 );
114
-
 
 
115
  // things that need to know the current screen.
116
- add_action( 'current_screen', array(
117
- $this,
118
- 'run_on_ad_edit_screen',
119
- ) );
120
- add_filter( 'pre_wp_unique_post_slug', array(
121
- $this,
122
- 'pre_wp_unique_post_slug',
123
- ), 10, 6 );
 
 
 
 
 
 
124
 
 
125
  }
126
 
127
  /**
@@ -131,7 +180,7 @@ class Advanced_Ads_Admin_Ad_Type {
131
  */
132
  public static function get_instance() {
133
  // If the single instance hasn't been set, set it now.
134
- if ( null == self::$instance ) {
135
  self::$instance = new self();
136
  }
137
 
@@ -202,14 +251,16 @@ class Advanced_Ads_Admin_Ad_Type {
202
  }
203
 
204
  // white-listed columns.
205
- $whitelist = apply_filters( 'advanced-ads-ad-list-allowed-columns', array(
206
- 'cb', // checkbox.
207
- 'title',
208
- 'ad_details',
209
- 'ad_timing',
210
- 'ad_shortcode',
211
- 'taxonomy-advanced_ads_groups',
212
- ) );
 
 
213
 
214
  // remove non-white-listed columns.
215
  foreach ( $new_columns as $_key => $_value ) {
@@ -281,10 +332,12 @@ class Advanced_Ads_Admin_Ad_Type {
281
  }
282
 
283
  ob_start();
284
- do_action_ref_array( 'advanced-ads-ad-list-timing-column-after', array(
285
- $ad,
286
- &$html_classes,
287
- ) );
 
 
288
  $content_after = ob_get_clean();
289
 
290
  include ADVADS_BASE_PATH . 'admin/views/ad-list-timing-column.php';
@@ -380,10 +433,13 @@ class Advanced_Ads_Admin_Ad_Type {
380
 
381
  // order ads by title on ads list.
382
  if ( is_admin() && empty( $vars['orderby'] ) && isset( $vars['post_type'] ) && $this->post_type === $vars['post_type'] ) {
383
- $vars = array_merge( $vars, array(
384
- 'orderby' => 'title',
385
- 'order' => 'ASC',
386
- ) );
 
 
 
387
  }
388
 
389
  return $vars;
@@ -438,7 +494,7 @@ class Advanced_Ads_Admin_Ad_Type {
438
  // filter to allow change of submitted ad settings.
439
  $_POST['advanced_ad'] = apply_filters( 'advanced-ads-ad-settings-pre-save', $_POST['advanced_ad'] );
440
 
441
- $ad->type = $_POST['advanced_ad']['type'];
442
 
443
  /**
444
  * Deprecated since introduction of "visitors" in 1.5.4
@@ -519,8 +575,7 @@ class Advanced_Ads_Admin_Ad_Type {
519
  $gm_date = date_create( $expiration_date, Advanced_Ads_Admin::get_wp_timezone() );
520
  $gm_date->setTimezone( new DateTimeZone( 'UTC' ) );
521
  $gm_date = $gm_date->format( 'Y-m-d-H-i' );
522
- list
523
- ( $year, $month, $day, $hour, $minute ) = explode( '-', $gm_date );
524
  $ad->expiry_date = gmmktime( $hour, $minute, 0, $month, $day, $year );
525
  }
526
  } else {
@@ -686,7 +741,8 @@ class Advanced_Ads_Admin_Ad_Type {
686
 
687
  wp_add_inline_script(
688
  'code-editor',
689
- sprintf( 'jQuery( function() { if( jQuery( "#advads-ad-content-plain" ).length && typeof Advanced_Ads_Admin !== "undefined" ){ Advanced_Ads_Admin.editor = wp.codeEditor.initialize( "advads-ad-content-plain", %s ); Advanced_Ads_Admin.editor.codemirror.on("keyup", Advanced_Ads_Admin.check_ad_source); jQuery( function() { Advanced_Ads_Admin.check_ad_source(); } ); } } );', wp_json_encode( $settings ) ) );
 
690
  }
691
 
692
  /**
@@ -715,9 +771,12 @@ class Advanced_Ads_Admin_Ad_Type {
715
  6 => __( 'Ad saved.', 'advanced-ads' ), // published.
716
  7 => __( 'Ad saved.', 'advanced-ads' ), // saved.
717
  8 => __( 'Ad submitted.', 'advanced-ads' ),
718
- 9 => sprintf( __( 'Ad scheduled for: <strong>%1$s</strong>.', 'advanced-ads' ),
 
 
719
  // translators: Publish box date format, see http://php.net/date.
720
- date_i18n( __( 'M j, Y @ G:i', 'advanced-ads' ), strtotime( $post->post_date ) ) ),
 
721
  10 => __( 'Ad draft updated.', 'advanced-ads' ),
722
  );
723
 
@@ -792,10 +851,15 @@ class Advanced_Ads_Admin_Ad_Type {
792
  }
793
 
794
  // Remove parent group dropdown in ad edit.
795
- add_filter( 'wp_dropdown_cats', array(
796
- $this,
797
- 'remove_parent_group_dropdown',
798
- ), 10, 2 );
 
 
 
 
 
799
 
800
  }
801
 
25
  */
26
  private function __construct() {
27
  // registering custom columns needs to work with and without DOING_AJAX.
28
+ add_filter(
29
+ 'manage_advanced_ads_posts_columns',
30
+ array(
31
+ $this,
32
+ 'ad_list_columns_head',
33
+ )
34
+ ); // extra column.
35
+ add_filter( 'manage_advanced_ads_posts_custom_column',
36
+ array(
37
+ $this,
38
+ 'ad_list_columns_content',
39
+ ),
40
+ 10,
41
+ 2
42
+ ); // extra column.
43
+ add_filter( 'manage_advanced_ads_posts_custom_column',
44
+ array(
45
+ $this,
46
+ 'ad_list_columns_timing',
47
+ ),
48
+ 10,
49
+ 2
50
+ ); // extra column.
51
+ add_filter( 'manage_advanced_ads_posts_custom_column',
52
+ array(
53
+ $this,
54
+ 'ad_list_columns_shortcode',
55
+ ),
56
+ 10,
57
+ 2
58
+ ); // extra column.
59
+ add_action( 'restrict_manage_posts',
60
+ array(
61
+ $this,
62
+ 'ad_list_add_filters',
63
+ )
64
+ );
65
+ add_filter( 'default_hidden_columns',
66
+ array(
67
+ $this,
68
+ 'hide_ad_list_columns',
69
+ ),
70
+ 10,
71
+ 2
72
+ ); // hide the ad shortcode column by default.
73
 
74
  // ad updated messages.
75
+ add_filter( 'bulk_post_updated_messages',
76
+ array(
77
+ $this,
78
+ 'ad_bulk_update_messages',
79
+ ),
80
+ 10,
81
+ 2
82
+ );
83
 
84
  // handling (ad) lists.
85
+ add_filter( 'request',
86
+ array(
87
+ $this,
88
+ 'ad_list_request',
89
+ )
90
+ ); // order ads by title, not ID.
91
+ add_action( 'all_admin_notices',
92
+ array(
93
+ $this,
94
+ 'no_ads_yet_notice',
95
+ )
96
+ );
97
  // save ads post type.
98
+ add_action( 'save_post',
99
+ array(
100
+ $this,
101
+ 'save_ad',
102
+ )
103
+ );
104
  // delete ads post type.
105
+ add_action( 'delete_post',
106
+ array(
107
+ $this,
108
+ 'delete_ad',
109
+ )
110
+ );
111
  // on post/ad edit screen.
112
+ add_action( 'edit_form_top',
113
+ array(
114
+ $this,
115
+ 'edit_form_above_title',
116
+ )
117
+ );
118
+ add_action( 'edit_form_after_title',
119
+ array(
120
+ $this,
121
+ 'edit_form_below_title',
122
+ )
123
+ );
124
+ add_action( 'dbx_post_sidebar',
125
+ array(
126
+ $this,
127
+ 'edit_form_end',
128
+ )
129
+ );
130
+ add_action( 'post_submitbox_misc_actions',
131
+ array(
132
+ $this,
133
+ 'add_submit_box_meta',
134
+ )
135
+ );
136
+ add_action( 'admin_enqueue_scripts',
137
+ array(
138
+ $this,
139
+ 'use_code_editor',
140
+ )
141
+ );
142
  // ad updated messages.
143
+ add_filter( 'post_updated_messages',
144
+ array(
145
+ $this,
146
+ 'ad_update_messages',
147
+ )
148
+ );
149
+ add_filter( 'gettext',
150
+ array(
151
+ $this,
152
+ 'replace_cheating_message',
153
+ ),
154
+ 20,
155
+ 2
156
+ );
157
  // things that need to know the current screen.
158
+ add_action( 'current_screen',
159
+ array(
160
+ $this,
161
+ 'run_on_ad_edit_screen',
162
+ )
163
+ );
164
+ add_filter( 'pre_wp_unique_post_slug',
165
+ array(
166
+ $this,
167
+ 'pre_wp_unique_post_slug',
168
+ ),
169
+ 10,
170
+ 6
171
+ );
172
 
173
+ $this->post_type = constant( 'Advanced_Ads::POST_TYPE_SLUG' );
174
  }
175
 
176
  /**
180
  */
181
  public static function get_instance() {
182
  // If the single instance hasn't been set, set it now.
183
+ if ( null === self::$instance ) {
184
  self::$instance = new self();
185
  }
186
 
251
  }
252
 
253
  // white-listed columns.
254
+ $whitelist = apply_filters( 'advanced-ads-ad-list-allowed-columns',
255
+ array(
256
+ 'cb', // checkbox.
257
+ 'title',
258
+ 'ad_details',
259
+ 'ad_timing',
260
+ 'ad_shortcode',
261
+ 'taxonomy-advanced_ads_groups',
262
+ )
263
+ );
264
 
265
  // remove non-white-listed columns.
266
  foreach ( $new_columns as $_key => $_value ) {
332
  }
333
 
334
  ob_start();
335
+ do_action_ref_array( 'advanced-ads-ad-list-timing-column-after',
336
+ array(
337
+ $ad,
338
+ &$html_classes,
339
+ )
340
+ );
341
  $content_after = ob_get_clean();
342
 
343
  include ADVADS_BASE_PATH . 'admin/views/ad-list-timing-column.php';
433
 
434
  // order ads by title on ads list.
435
  if ( is_admin() && empty( $vars['orderby'] ) && isset( $vars['post_type'] ) && $this->post_type === $vars['post_type'] ) {
436
+ $vars = array_merge(
437
+ $vars,
438
+ array(
439
+ 'orderby' => 'title',
440
+ 'order' => 'ASC',
441
+ )
442
+ );
443
  }
444
 
445
  return $vars;
494
  // filter to allow change of submitted ad settings.
495
  $_POST['advanced_ad'] = apply_filters( 'advanced-ads-ad-settings-pre-save', $_POST['advanced_ad'] );
496
 
497
+ $ad->type = wp_unslash( $_POST['advanced_ad']['type'] );
498
 
499
  /**
500
  * Deprecated since introduction of "visitors" in 1.5.4
575
  $gm_date = date_create( $expiration_date, Advanced_Ads_Admin::get_wp_timezone() );
576
  $gm_date->setTimezone( new DateTimeZone( 'UTC' ) );
577
  $gm_date = $gm_date->format( 'Y-m-d-H-i' );
578
+ list( $year, $month, $day, $hour, $minute ) = explode( '-', $gm_date );
 
579
  $ad->expiry_date = gmmktime( $hour, $minute, 0, $month, $day, $year );
580
  }
581
  } else {
741
 
742
  wp_add_inline_script(
743
  'code-editor',
744
+ sprintf( 'jQuery( function() { if( jQuery( "#advads-ad-content-plain" ).length && typeof Advanced_Ads_Admin !== "undefined" ){ Advanced_Ads_Admin.editor = wp.codeEditor.initialize( "advads-ad-content-plain", %s ); Advanced_Ads_Admin.editor.codemirror.on("keyup", Advanced_Ads_Admin.check_ad_source); jQuery( function() { Advanced_Ads_Admin.check_ad_source(); } ); } } );', wp_json_encode( $settings ) )
745
+ );
746
  }
747
 
748
  /**
771
  6 => __( 'Ad saved.', 'advanced-ads' ), // published.
772
  7 => __( 'Ad saved.', 'advanced-ads' ), // saved.
773
  8 => __( 'Ad submitted.', 'advanced-ads' ),
774
+ 9 => sprintf(
775
+ // translators: %1$s is a date.
776
+ __( 'Ad scheduled for: <strong>%1$s</strong>.', 'advanced-ads' ),
777
  // translators: Publish box date format, see http://php.net/date.
778
+ date_i18n( __( 'M j, Y @ G:i', 'advanced-ads' ), strtotime( $post->post_date ) )
779
+ ),
780
  10 => __( 'Ad draft updated.', 'advanced-ads' ),
781
  );
782
 
851
  }
852
 
853
  // Remove parent group dropdown in ad edit.
854
+ add_filter(
855
+ 'wp_dropdown_cats',
856
+ array(
857
+ $this,
858
+ 'remove_parent_group_dropdown',
859
+ ),
860
+ 10,
861
+ 2
862
+ );
863
 
864
  }
865
 
admin/includes/class-licenses.php CHANGED
@@ -226,6 +226,10 @@ class Advanced_Ads_Admin_Licenses {
226
 
227
  /**
228
  * Check if a request was blocked by our firewall
 
 
 
 
229
  */
230
  public function blocked_by_firewall( $response ) {
231
  $response_code = wp_remote_retrieve_response_code( $response );
@@ -269,7 +273,13 @@ class Advanced_Ads_Admin_Licenses {
269
  'license' => $license_key,
270
  'item_name' => urlencode( $plugin_name ),
271
  );
272
- $response = wp_remote_get( add_query_arg( $api_params, ADVADS_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
 
 
 
 
 
 
273
  if ( is_wp_error( $response ) ) {
274
  return false;
275
  }
@@ -432,9 +442,13 @@ class Advanced_Ads_Admin_Licenses {
432
  * @return bool
433
  */
434
  public function get_probably_all_access() {
435
- $valid = array_filter( $this->get_licenses(), function ( $key ) {
436
- return $this->get_license_status( ADVADS_SLUG . '-' . $key );
437
- }, ARRAY_FILTER_USE_KEY );
 
 
 
 
438
 
439
 
440
  return array() !== $valid && max( array_count_values( $valid ) ) > 1;
@@ -539,17 +553,9 @@ class Advanced_Ads_Admin_Licenses {
539
  /**
540
  * Set the expiration of the updater transient key to 1 day instead of 1 hour to prevent too many update checks
541
  *
542
- * @deprecated since version 1.7.14 – not using transient anymore, but option
543
- */
544
- public function set_expiration_of_update_transient( $expiration ) {
545
-
546
- return 86400;
547
- }
548
-
549
- /**
550
- * Set the expiration of the updater transient key to 1 day instead of 1 hour to prevent too many update checks
551
  *
552
- * @return integer
553
  * @since 1.7.14
554
  */
555
  public function set_expiration_of_update_option( $value ) {
@@ -580,11 +586,11 @@ class Advanced_Ads_Admin_Licenses {
580
  }
581
 
582
  if ( isset( $plugin_file ) && $plugin_file ) {
583
- // hides the download url, but makes debugging harder
584
  // $updater->strings['downloading_package'] = __( 'Downloading updated version...', 'advanced-ads' );
585
  //$updater->skin->feedback( 'downloading_package' );
586
 
587
- // if AJAX; show direct update link as first possible solution
588
  if ( defined( 'DOING_AJAX' ) ) {
589
  $update_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $plugin_file, 'upgrade-plugin_' . $plugin_file );
590
  $updater->strings['download_failed'] = sprintf( __( 'Download failed. <a href="%s">Click here to try another method</a>.', 'advanced-ads' ), $update_link );
226
 
227
  /**
228
  * Check if a request was blocked by our firewall
229
+ *
230
+ * @param array $response response from license call.
231
+ *
232
+ * @return mixed message or false
233
  */
234
  public function blocked_by_firewall( $response ) {
235
  $response_code = wp_remote_retrieve_response_code( $response );
273
  'license' => $license_key,
274
  'item_name' => urlencode( $plugin_name ),
275
  );
276
+ $response = wp_remote_get(
277
+ add_query_arg( $api_params, ADVADS_URL ),
278
+ array(
279
+ 'timeout' => 15,
280
+ 'sslverify' => false,
281
+ )
282
+ );
283
  if ( is_wp_error( $response ) ) {
284
  return false;
285
  }
442
  * @return bool
443
  */
444
  public function get_probably_all_access() {
445
+ $valid = array_filter(
446
+ $this->get_licenses(),
447
+ function ( $key ) {
448
+ return $this->get_license_status( ADVADS_SLUG . '-' . $key );
449
+ },
450
+ ARRAY_FILTER_USE_KEY
451
+ );
452
 
453
 
454
  return array() !== $valid && max( array_count_values( $valid ) ) > 1;
553
  /**
554
  * Set the expiration of the updater transient key to 1 day instead of 1 hour to prevent too many update checks
555
  *
556
+ * @param array $value value array.
 
 
 
 
 
 
 
 
557
  *
558
+ * @return array
559
  * @since 1.7.14
560
  */
561
  public function set_expiration_of_update_option( $value ) {
586
  }
587
 
588
  if ( isset( $plugin_file ) && $plugin_file ) {
589
+ // hides the download url, but makes debugging harder.
590
  // $updater->strings['downloading_package'] = __( 'Downloading updated version...', 'advanced-ads' );
591
  //$updater->skin->feedback( 'downloading_package' );
592
 
593
+ // if AJAX; show direct update link as first possible solution.
594
  if ( defined( 'DOING_AJAX' ) ) {
595
  $update_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $plugin_file, 'upgrade-plugin_' . $plugin_file );
596
  $updater->strings['download_failed'] = sprintf( __( 'Download failed. <a href="%s">Click here to try another method</a>.', 'advanced-ads' ), $update_link );
admin/includes/class-list-filters.php CHANGED
@@ -70,7 +70,8 @@ class Advanced_Ads_Ad_List_Filters {
70
  * Collect available filters for ad overview page.
71
  *
72
  * @param array $posts array of ads.
73
- * @return array
 
74
  */
75
  private function collect_filters( $posts ) {
76
 
@@ -89,14 +90,15 @@ class Advanced_Ads_Ad_List_Filters {
89
  // can not filter correctly with "trashed" posts. Do not display any filtering option in this case.
90
  if ( isset( $_REQUEST['post_status'] ) && 'trash' === $_REQUEST['post_status'] ) {
91
  $this->all_filters = $all_filters;
 
92
  return;
93
  }
94
 
95
  $advads = Advanced_Ads::get_instance();
96
-
97
- // put potential groups in another array which we later reduce so that we only check groups we don’t know, yet
98
  $groups_to_check = $this->ads_in_groups;
99
-
100
  foreach ( $posts as $post ) {
101
 
102
  if ( ! isset( $this->all_ads_options[ $post->ID ] ) ) {
@@ -111,8 +113,8 @@ class Advanced_Ads_Ad_List_Filters {
111
  */
112
  foreach ( $groups_to_check as $key => $ads ) {
113
  if ( ! isset( $all_filters['all_groups'][ $key ] ) // skip if this group is already known.
114
- && in_array( $post->ID, $ads, true )
115
- && isset( $this->all_groups[ $key ] ) ) {
116
  $all_filters['all_groups'][ $key ] = $this->all_groups[ $key ]['name'];
117
  // remove groups that are already selected for the filter.
118
  unset( $groups_to_check[ $key ] );
@@ -156,8 +158,9 @@ class Advanced_Ads_Ad_List_Filters {
156
  }
157
  }
158
 
159
- if ( ! array_key_exists( $ad_option['type'], $all_filters['all_types'] )
160
- && isset( $advads->ad_types[ $ad_option['type'] ] )
 
161
  ) {
162
  $all_filters['all_types'][ $ad_option['type'] ] = $advads->ad_types[ $ad_option['type'] ]->title;
163
  }
@@ -203,24 +206,24 @@ class Advanced_Ads_Ad_List_Filters {
203
 
204
  $group_ids = array_keys( $groups );
205
  $group_ids_str = implode( ',', $group_ids );
206
- $term_relations = array();
207
-
208
  /**
209
- * we need to use %1$s below, because when using %s the $wpdb->prepare function adds quotation marks around the value,
210
  * which breaks the SQL, because the numbers are no longer recognised as such
211
  */
212
- if ( ! empty( $group_ids ) ) {
213
- $term_relations = $wpdb->get_results(
214
- $wpdb->prepare(
215
- 'SELECT object_id, term_taxonomy_id FROM `' . $wpdb->prefix . 'term_relationships` WHERE `term_taxonomy_id` IN (' .
216
- 'SELECT term_taxonomy_id FROM `' . $wpdb->prefix . 'term_taxonomy` WHERE `taxonomy` = %s' .
217
- ')',
218
- Advanced_Ads::AD_GROUP_TAXONOMY
219
- ),
220
- 'ARRAY_A'
221
- );
222
  }
223
- foreach ( $term_relations as $value ) {
224
  if ( isset( $value['term_taxonomy_id'] ) && isset( $value['object_id'] ) ) {
225
  $this->ads_in_groups[ absint( $value['term_taxonomy_id'] ) ][] = absint( $value['object_id'] );
226
  }
@@ -253,8 +256,10 @@ class Advanced_Ads_Ad_List_Filters {
253
  /**
254
  * Re-order the posts list by post title.
255
  *
256
- * @param string $orderby the previous orderby value.
257
- * @param WP_Query $the_query the current WP_Query object.
 
 
258
  */
259
  public function orderby_filter( $orderby, $the_query ) {
260
  if ( ! function_exists( 'get_current_screen' ) ) {
@@ -272,14 +277,17 @@ class Advanced_Ads_Ad_List_Filters {
272
  $orderby = 'post_title ASC';
273
  }
274
  }
 
275
  return $orderby;
276
  }
277
 
278
  /**
279
  * Edit the query for list table.
280
  *
281
- * @param array $posts the posts array from the query.
282
  * @param WP_Query $the_query the current WP_Query object.
 
 
283
  */
284
  public function post_results( $posts, $the_query ) {
285
  if ( ! function_exists( 'get_current_screen' ) ) {
@@ -308,6 +316,7 @@ class Advanced_Ads_Ad_List_Filters {
308
  if ( false !== strpos( $server['PHP_SELF'], 'edit.php' ) && isset( $request['post_type'] ) && Advanced_Ads::POST_TYPE_SLUG === $request['post_type'] ) {
309
  $this->collect_all_ads( $posts );
310
  }
 
311
  return $posts;
312
  }
313
 
@@ -350,8 +359,10 @@ class Advanced_Ads_Ad_List_Filters {
350
  /**
351
  * Apply ad filters on post array
352
  *
353
- * @param array $posts the oriinal post array.
354
  * @param WP_Query $the_query the current WP_Query object.
 
 
355
  */
356
  private function ad_filters( $posts, &$the_query ) {
357
  $using_original = true;
@@ -380,7 +391,7 @@ class Advanced_Ads_Ad_List_Filters {
380
  $new_posts = array();
381
  $the_list = $using_original ? $this->all_ads : $posts;
382
  foreach ( $the_list as $post ) {
383
- if ( $author === absint( $post->post_author ) ) {
384
  $new_posts[] = $post;
385
  }
386
  }
@@ -405,28 +416,28 @@ class Advanced_Ads_Ad_List_Filters {
405
  $using_original = false;
406
  }
407
 
408
- /**
409
- * Filter by taxonomy
410
- */
411
- if ( isset( $request['taxonomy'] ) && isset( $request['term'] ) ) {
412
-
413
- $term = $request['term'];
414
- global $wpdb;
415
- $q = 'SELECT `object_id` FROM `' . $wpdb->prefix . 'term_relationships` WHERE `term_taxonomy_id` = (' .
416
- 'SELECT ' . $wpdb->prefix . 'terms.term_id FROM `' . $wpdb->prefix . 'terms` INNER JOIN ' .
417
- $wpdb->prefix . 'term_taxonomy on ' . $wpdb->prefix . 'terms.term_id = ' . $wpdb->prefix . 'term_taxonomy.term_id ' .
418
- 'WHERE ' . $wpdb->prefix . 'terms.slug = %s AND ' . $wpdb->prefix . 'term_taxonomy.taxonomy = %s' .
419
- ')';
420
-
421
- $q = $wpdb->prepare( $q, $term, Advanced_Ads::AD_GROUP_TAXONOMY );
422
-
423
- $object_ids = $wpdb->get_results( $q, 'ARRAY_A' );
424
- $ads_in_taxo = array();
425
-
426
- foreach( $object_ids as $object ) {
427
- $ads_in_taxo[] = absint( $object['object_id'] );
428
- }
429
-
430
  $new_posts = array();
431
  $the_list = $using_original ? $this->all_ads : $posts;
432
  foreach ( $the_list as $post ) {
@@ -437,9 +448,9 @@ class Advanced_Ads_Ad_List_Filters {
437
  $posts = $new_posts;
438
  $the_query->found_posts = count( $posts );
439
  $using_original = false;
440
-
441
- }
442
-
443
  /**
444
  * Filter ad type
445
  */
70
  * Collect available filters for ad overview page.
71
  *
72
  * @param array $posts array of ads.
73
+ *
74
+ * @return null
75
  */
76
  private function collect_filters( $posts ) {
77
 
90
  // can not filter correctly with "trashed" posts. Do not display any filtering option in this case.
91
  if ( isset( $_REQUEST['post_status'] ) && 'trash' === $_REQUEST['post_status'] ) {
92
  $this->all_filters = $all_filters;
93
+
94
  return;
95
  }
96
 
97
  $advads = Advanced_Ads::get_instance();
98
+
99
+ // put potential groups in another array which we later reduce so that we only check groups we don’t know, yet.
100
  $groups_to_check = $this->ads_in_groups;
101
+
102
  foreach ( $posts as $post ) {
103
 
104
  if ( ! isset( $this->all_ads_options[ $post->ID ] ) ) {
113
  */
114
  foreach ( $groups_to_check as $key => $ads ) {
115
  if ( ! isset( $all_filters['all_groups'][ $key ] ) // skip if this group is already known.
116
+ && in_array( $post->ID, $ads, true )
117
+ && isset( $this->all_groups[ $key ] ) ) {
118
  $all_filters['all_groups'][ $key ] = $this->all_groups[ $key ]['name'];
119
  // remove groups that are already selected for the filter.
120
  unset( $groups_to_check[ $key ] );
158
  }
159
  }
160
 
161
+ if ( isset( $ad_option['type'] ) // could be missing for new ads that are stored only by WP auto-save.
162
+ && ! array_key_exists( $ad_option['type'], $all_filters['all_types'] )
163
+ && isset( $advads->ad_types[ $ad_option['type'] ] )
164
  ) {
165
  $all_filters['all_types'][ $ad_option['type'] ] = $advads->ad_types[ $ad_option['type'] ]->title;
166
  }
206
 
207
  $group_ids = array_keys( $groups );
208
  $group_ids_str = implode( ',', $group_ids );
209
+ $term_relations = array();
210
+
211
  /**
212
+ * We need to use %1$s below, because when using %s the $wpdb->prepare function adds quotation marks around the value,
213
  * which breaks the SQL, because the numbers are no longer recognised as such
214
  */
215
+ if ( ! empty( $group_ids ) ) {
216
+ $term_relations = $wpdb->get_results(
217
+ $wpdb->prepare(
218
+ 'SELECT object_id, term_taxonomy_id FROM `' . $wpdb->prefix . 'term_relationships` WHERE `term_taxonomy_id` IN (' .
219
+ 'SELECT term_taxonomy_id FROM `' . $wpdb->prefix . 'term_taxonomy` WHERE `taxonomy` = %s' .
220
+ ')',
221
+ Advanced_Ads::AD_GROUP_TAXONOMY
222
+ ),
223
+ 'ARRAY_A'
224
+ );
225
  }
226
+ foreach ( $term_relations as $value ) {
227
  if ( isset( $value['term_taxonomy_id'] ) && isset( $value['object_id'] ) ) {
228
  $this->ads_in_groups[ absint( $value['term_taxonomy_id'] ) ][] = absint( $value['object_id'] );
229
  }
256
  /**
257
  * Re-order the posts list by post title.
258
  *
259
+ * @param string $orderby the previous orderby value.
260
+ * @param WP_Query $the_query the current WP_Query object.
261
+ *
262
+ * @return mixed
263
  */
264
  public function orderby_filter( $orderby, $the_query ) {
265
  if ( ! function_exists( 'get_current_screen' ) ) {
277
  $orderby = 'post_title ASC';
278
  }
279
  }
280
+
281
  return $orderby;
282
  }
283
 
284
  /**
285
  * Edit the query for list table.
286
  *
287
+ * @param array $posts the posts array from the query.
288
  * @param WP_Query $the_query the current WP_Query object.
289
+ *
290
+ * @return array with posts
291
  */
292
  public function post_results( $posts, $the_query ) {
293
  if ( ! function_exists( 'get_current_screen' ) ) {
316
  if ( false !== strpos( $server['PHP_SELF'], 'edit.php' ) && isset( $request['post_type'] ) && Advanced_Ads::POST_TYPE_SLUG === $request['post_type'] ) {
317
  $this->collect_all_ads( $posts );
318
  }
319
+
320
  return $posts;
321
  }
322
 
359
  /**
360
  * Apply ad filters on post array
361
  *
362
+ * @param array $posts the original post array.
363
  * @param WP_Query $the_query the current WP_Query object.
364
+ *
365
+ * @return array with posts
366
  */
367
  private function ad_filters( $posts, &$the_query ) {
368
  $using_original = true;
391
  $new_posts = array();
392
  $the_list = $using_original ? $this->all_ads : $posts;
393
  foreach ( $the_list as $post ) {
394
+ if ( absint( $post->post_author ) === $author ) {
395
  $new_posts[] = $post;
396
  }
397
  }
416
  $using_original = false;
417
  }
418
 
419
+ /**
420
+ * Filter by taxonomy
421
+ */
422
+ if ( isset( $request['taxonomy'] ) && isset( $request['term'] ) ) {
423
+
424
+ $term = $request['term'];
425
+ global $wpdb;
426
+ $q = 'SELECT `object_id` FROM `' . $wpdb->prefix . 'term_relationships` WHERE `term_taxonomy_id` = (' .
427
+ 'SELECT ' . $wpdb->prefix . 'terms.term_id FROM `' . $wpdb->prefix . 'terms` INNER JOIN ' .
428
+ $wpdb->prefix . 'term_taxonomy on ' . $wpdb->prefix . 'terms.term_id = ' . $wpdb->prefix . 'term_taxonomy.term_id ' .
429
+ 'WHERE ' . $wpdb->prefix . 'terms.slug = %s AND ' . $wpdb->prefix . 'term_taxonomy.taxonomy = %s' .
430
+ ')';
431
+
432
+ $q = $wpdb->prepare( $q, $term, Advanced_Ads::AD_GROUP_TAXONOMY );
433
+
434
+ $object_ids = $wpdb->get_results( $q, 'ARRAY_A' );
435
+ $ads_in_taxo = array();
436
+
437
+ foreach ( $object_ids as $object ) {
438
+ $ads_in_taxo[] = absint( $object['object_id'] );
439
+ }
440
+
441
  $new_posts = array();
442
  $the_list = $using_original ? $this->all_ads : $posts;
443
  foreach ( $the_list as $post ) {
448
  $posts = $new_posts;
449
  $the_query->found_posts = count( $posts );
450
  $using_original = false;
451
+
452
+ }
453
+
454
  /**
455
  * Filter ad type
456
  */
advanced-ads.php CHANGED
@@ -6,13 +6,13 @@
6
  * @author Thomas Maier <thomas.maier@webgilde.com>
7
  * @license GPL-2.0+
8
  * @link https://wpadvancedads.com
9
- * @copyright 2013-2019 Thomas Maier, Advanced Ads GmbH
10
  *
11
  * @wordpress-plugin
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
- * Version: 1.16.1
16
  * Author: Thomas Maier, Advanced Ads GmbH
17
  * Author URI: https://wpadvancedads.com
18
  * Text Domain: advanced-ads
@@ -39,7 +39,7 @@ define( 'ADVADS_BASE_DIR', dirname( ADVADS_BASE ) ); // directory of the plugin
39
  // general and global slug, e.g. to store options in WP
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
- define( 'ADVADS_VERSION', '1.16.1' );
43
 
44
  /*----------------------------------------------------------------------------*
45
  * Autoloading, modules and functions
6
  * @author Thomas Maier <thomas.maier@webgilde.com>
7
  * @license GPL-2.0+
8
  * @link https://wpadvancedads.com
9
+ * @copyright 2013-2020 Thomas Maier, Advanced Ads GmbH
10
  *
11
  * @wordpress-plugin
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
+ * Version: 1.17
16
  * Author: Thomas Maier, Advanced Ads GmbH
17
  * Author URI: https://wpadvancedads.com
18
  * Text Domain: advanced-ads
39
  // general and global slug, e.g. to store options in WP
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
+ define( 'ADVADS_VERSION', '1.17' );
43
 
44
  /*----------------------------------------------------------------------------*
45
  * Autoloading, modules and functions
classes/ad-ajax.php CHANGED
@@ -13,6 +13,7 @@ class Advanced_Ads_Ajax {
13
  add_action( 'wp_ajax_nopriv_advads_ad_select', array( $this, 'advads_ajax_ad_select' ) );
14
  add_action( 'wp_ajax_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
15
  add_action( 'wp_ajax_nopriv_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
 
16
  }
17
 
18
  private static $instance;
@@ -134,4 +135,28 @@ class Advanced_Ads_Ajax {
134
 
135
  die();
136
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  }
13
  add_action( 'wp_ajax_nopriv_advads_ad_select', array( $this, 'advads_ajax_ad_select' ) );
14
  add_action( 'wp_ajax_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
15
  add_action( 'wp_ajax_nopriv_advads-ad-health-notice-push', array( $this, 'ad_health_notice_push' ) );
16
+ add_action( 'wp_ajax_advads-ad-frontend-notice-update', array( $this, 'frontend_notice_update' ) );
17
  }
18
 
19
  private static $instance;
135
 
136
  die();
137
  }
138
+
139
+ /**
140
+ * Update frontend notice array
141
+ */
142
+ public function frontend_notice_update() {
143
+
144
+ check_ajax_referer( 'advanced-ads-frontend-notice-nonce', 'nonce' );
145
+
146
+ if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads' ) ) ) {
147
+ return;
148
+ }
149
+
150
+ $key = ( !empty( $_REQUEST['key'] ) ) ? esc_attr( $_REQUEST['key'] ) : false;
151
+ $attr = ( !empty( $_REQUEST['attr'] ) && is_array( $_REQUEST['attr'] ) ) ? $_REQUEST['attr'] : array();
152
+
153
+ // update or new entry?
154
+ if( isset( $attr['mode'] ) && 'update' === $attr['mode'] ){
155
+ // Advanced_Ads_Frontend_Notices::get_instance()->update( $key, $attr );
156
+ } else {
157
+ Advanced_Ads_Frontend_Notices::get_instance()->update( $key, $attr );
158
+ }
159
+
160
+ die();
161
+ }
162
  }
classes/ad-health-notices.php CHANGED
@@ -254,17 +254,6 @@ class Advanced_Ads_Ad_Health_Notices {
254
  } else {
255
  $this->remove( 'old_php' );
256
  }
257
- /*if ( Advanced_Ads_Checks::cache() && ! defined( 'AAP_VERSION' ) ) {
258
- $this->add( 'cache_no_pro' );
259
- } else {
260
- $this->remove( 'cache_no_pro' );
261
- }*/
262
- // 1907: Autoptimize didn’t cause issues for a while so let’s remove the warning and see
263
- /*if ( Advanced_Ads_Checks::active_autoptimize() && ! defined( 'AAP_VERSION' ) ) {
264
- $this->add( 'autoptimize_no_pro' );
265
- } else {
266
- $this->remove( 'autoptimize_no_pro' );
267
- }*/
268
  if ( count( Advanced_Ads_Checks::conflicting_plugins() ) ) {
269
  $this->add( 'conflicting_plugins' );
270
  } else {
254
  } else {
255
  $this->remove( 'old_php' );
256
  }
 
 
 
 
 
 
 
 
 
 
 
257
  if ( count( Advanced_Ads_Checks::conflicting_plugins() ) ) {
258
  $this->add( 'conflicting_plugins' );
259
  } else {
classes/ad.php CHANGED
@@ -167,6 +167,7 @@ class Advanced_Ads_Ad {
167
  $this->is_ad = true;
168
  }
169
 
 
170
  $this->type = $this->options( 'type' );
171
  $this->title = $_data->post_title;
172
  /* load ad type object */
@@ -590,7 +591,8 @@ class Advanced_Ads_Ad {
590
  $output = $this->add_wrapper( $output );
591
 
592
  // add a clearfix, if set
593
- if ( isset($this->output['clearfix']) && $this->output['clearfix'] ){
 
594
  $output .= '<br style="clear: both; display: block; float: none;"/>';
595
  }
596
  }
167
  $this->is_ad = true;
168
  }
169
 
170
+
171
  $this->type = $this->options( 'type' );
172
  $this->title = $_data->post_title;
173
  /* load ad type object */
591
  $output = $this->add_wrapper( $output );
592
 
593
  // add a clearfix, if set
594
+ if ( ( isset($this->output['clearfix'] ) && $this->output['clearfix'] )
595
+ || ( ! empty( $this->args['is_top_level'] ) && ! empty( $this->args['placement_clearfix'] ) ) ) {
596
  $output .= '<br style="clear: both; display: block; float: none;"/>';
597
  }
598
  }
classes/ad_group.php CHANGED
@@ -259,6 +259,10 @@ class Advanced_Ads_Group {
259
  . '</div>';
260
  }
261
 
 
 
 
 
262
  // filter final group output
263
  return apply_filters( 'advanced-ads-group-output', $output_string, $this );
264
  }
259
  . '</div>';
260
  }
261
 
262
+ if ( ! empty( $this->ad_args['is_top_level'] ) && ! empty( $this->ad_args['placement_clearfix'] ) ) {
263
+ $output_string .= '<br style="clear: both; display: block; float: none;"/>';
264
+ }
265
+
266
  // filter final group output
267
  return apply_filters( 'advanced-ads-group-output', $output_string, $this );
268
  }
classes/ad_placements.php CHANGED
@@ -345,10 +345,6 @@ class Advanced_Ads_Placements {
345
 
346
  $result = Advanced_Ads_Select::get_instance()->get_ad_by_method( (int) $_item[1], $_item[0], $args );
347
 
348
- if ( $result && ! empty( $args['placement_clearfix'] ) ) {
349
- $result .= '<br style="clear: both; display: block; float: none; color:blue;"/>';
350
- }
351
-
352
  return $result;
353
  }
354
  }
345
 
346
  $result = Advanced_Ads_Select::get_instance()->get_ad_by_method( (int) $_item[1], $_item[0], $args );
347
 
 
 
 
 
348
  return $result;
349
  }
350
  }
classes/ad_type_image.php CHANGED
@@ -83,7 +83,7 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
83
 
84
  $image = wp_get_attachment_image_src( $attachment_id, 'full' );
85
  $style = '';
86
-
87
  if ( $image ) {
88
  list( $src, $width, $height ) = $image;
89
  // override image sizes with the sizes given in ad options, but in frontend only
@@ -95,13 +95,14 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
95
  $hwstring = image_hwstring($width, $height);
96
  $attachment = get_post($attachment_id);
97
  $alt = trim(esc_textarea( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ));
98
-
99
  global $wp_current_filter;
100
-
 
101
  $more_attributes = $srcset = $sizes = '';
102
  // create srcset and sizes attributes if we are in the the_content filter and in WordPress 4.4
103
- if( isset( $wp_current_filter )
104
- && in_array( 'the_content', $wp_current_filter )
105
  && ! defined( 'ADVADS_DISABLE_RESPONSIVE_IMAGES' )){
106
  if( function_exists( 'wp_get_attachment_image_srcset' ) ){
107
  $srcset = wp_get_attachment_image_srcset( $attachment_id, 'full' );
@@ -110,24 +111,32 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
110
  $sizes = wp_get_attachment_image_sizes( $attachment_id, 'full' );
111
  }
112
  if ( $srcset && $sizes ) {
113
- $more_attributes .= ' srcset=\'' . $srcset . '\' sizes=\'' . $sizes . '\'';
114
  }
115
  }
116
-
117
- // add css rule to be able to center the ad
 
 
 
 
 
 
 
 
118
  if( isset( $ad->output['position'] ) && 'center' === $ad->output['position'] ){
119
  $style .= 'display: inline-block;';
120
  }
121
-
122
  $style = apply_filters( 'advanced-ads-ad-image-tag-style', $style );
123
  $style = '' !== $style ? 'style="' . $style . '"' : '';
124
-
125
  $more_attributes = apply_filters( 'advanced-ads-ad-image-tag-attributes', $more_attributes );
126
-
127
  echo rtrim("<img $hwstring") . " src='$src' alt='$alt' $more_attributes $style/>";
128
  }
129
  }
130
-
131
  /**
132
  * render image icon for overview pages
133
  *
@@ -139,7 +148,7 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
139
  $image = wp_get_attachment_image_src( $attachment_id, 'medium', true );
140
  if ( $image ) {
141
  list( $src, $width, $height ) = $image;
142
-
143
  // scale down width or height to max 100px
144
  if( $width > $height ){
145
  $height = absint( $height / ( $width / 100 ) );
@@ -148,11 +157,11 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
148
  $width = absint( $width / ( $height / 100 ) );
149
  $height = 100;
150
  }
151
-
152
  $hwstring = trim( image_hwstring($width, $height) );
153
  $attachment = get_post($attachment_id);
154
  $alt = trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ));
155
-
156
  echo "<img $hwstring src='$src' alt='$alt' />";
157
  }
158
  }
@@ -179,35 +188,35 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
179
 
180
  return ob_get_clean();
181
  }
182
-
183
  /**
184
  * Generate a string with the original image size for output in the backend
185
  * Only show, if different from entered image sizes
186
- *
187
  * @param obj $ad Advanced_Ads_Ad
188
  * @return str empty, if the entered size is the same as the original size
189
  */
190
  public static function show_original_image_size( $ad ){
191
 
192
  $attachment_id = ( isset( $ad->output['image_id'] ) ) ? absint( $ad->output['image_id'] ) : '';
193
-
194
  $image = wp_get_attachment_image_src( $attachment_id, 'full' );
195
-
196
  if ( $image ) {
197
  list( $src, $width, $height ) = $image;
198
- ?><p class="description"><?php if( ( isset( $ad->width ) && $ad->width != $width )
199
  || ( isset( $ad->height ) && $ad->height != $height ) ) {
200
- printf(
201
  /**
202
- * translators: $s is a size string like "728 x 90".
203
  * This string shows up on the ad edit page of image ads if the size entered for the ad is different from the size of the uploaded image.
204
  */
205
  esc_attr__( 'Original size: %s', 'advanced-ads' ), $width . '&nbsp;x&nbsp;' . $height ); ?></p><?php
206
  }
207
  }
208
-
209
  return '';
210
-
211
  }
212
 
213
  }
83
 
84
  $image = wp_get_attachment_image_src( $attachment_id, 'full' );
85
  $style = '';
86
+
87
  if ( $image ) {
88
  list( $src, $width, $height ) = $image;
89
  // override image sizes with the sizes given in ad options, but in frontend only
95
  $hwstring = image_hwstring($width, $height);
96
  $attachment = get_post($attachment_id);
97
  $alt = trim(esc_textarea( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ));
98
+
99
  global $wp_current_filter;
100
+
101
+ // TODO: use an array for attributes so they are simpler to extend
102
  $more_attributes = $srcset = $sizes = '';
103
  // create srcset and sizes attributes if we are in the the_content filter and in WordPress 4.4
104
+ if( isset( $wp_current_filter )
105
+ && in_array( 'the_content', $wp_current_filter )
106
  && ! defined( 'ADVADS_DISABLE_RESPONSIVE_IMAGES' )){
107
  if( function_exists( 'wp_get_attachment_image_srcset' ) ){
108
  $srcset = wp_get_attachment_image_srcset( $attachment_id, 'full' );
111
  $sizes = wp_get_attachment_image_sizes( $attachment_id, 'full' );
112
  }
113
  if ( $srcset && $sizes ) {
114
+ $more_attributes .= ' srcset="' . $srcset . '" sizes="' . $sizes . '"';
115
  }
116
  }
117
+
118
+ // TODO: move to classes/compabtility.php when we have a simpler filter for additional attributes
119
+ // compabitility with WP Smush. Disables their lazy load for image ads because it caused them to not show up in certain positions at all.
120
+ $wp_smush_settings = get_option( 'wp-smush-settings' );
121
+ if ( isset( $wp_smush_settings['lazy_load'] ) && $wp_smush_settings['lazy_load'] ) {
122
+ // Lazy load is enabled.
123
+ $more_attributes .= ' class="no-lazyload"';
124
+ }
125
+
126
+ // add css rule to be able to center the ad.
127
  if( isset( $ad->output['position'] ) && 'center' === $ad->output['position'] ){
128
  $style .= 'display: inline-block;';
129
  }
130
+
131
  $style = apply_filters( 'advanced-ads-ad-image-tag-style', $style );
132
  $style = '' !== $style ? 'style="' . $style . '"' : '';
133
+
134
  $more_attributes = apply_filters( 'advanced-ads-ad-image-tag-attributes', $more_attributes );
135
+
136
  echo rtrim("<img $hwstring") . " src='$src' alt='$alt' $more_attributes $style/>";
137
  }
138
  }
139
+
140
  /**
141
  * render image icon for overview pages
142
  *
148
  $image = wp_get_attachment_image_src( $attachment_id, 'medium', true );
149
  if ( $image ) {
150
  list( $src, $width, $height ) = $image;
151
+
152
  // scale down width or height to max 100px
153
  if( $width > $height ){
154
  $height = absint( $height / ( $width / 100 ) );
157
  $width = absint( $width / ( $height / 100 ) );
158
  $height = 100;
159
  }
160
+
161
  $hwstring = trim( image_hwstring($width, $height) );
162
  $attachment = get_post($attachment_id);
163
  $alt = trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ));
164
+
165
  echo "<img $hwstring src='$src' alt='$alt' />";
166
  }
167
  }
188
 
189
  return ob_get_clean();
190
  }
191
+
192
  /**
193
  * Generate a string with the original image size for output in the backend
194
  * Only show, if different from entered image sizes
195
+ *
196
  * @param obj $ad Advanced_Ads_Ad
197
  * @return str empty, if the entered size is the same as the original size
198
  */
199
  public static function show_original_image_size( $ad ){
200
 
201
  $attachment_id = ( isset( $ad->output['image_id'] ) ) ? absint( $ad->output['image_id'] ) : '';
202
+
203
  $image = wp_get_attachment_image_src( $attachment_id, 'full' );
204
+
205
  if ( $image ) {
206
  list( $src, $width, $height ) = $image;
207
+ ?><p class="description"><?php if( ( isset( $ad->width ) && $ad->width != $width )
208
  || ( isset( $ad->height ) && $ad->height != $height ) ) {
209
+ printf(
210
  /**
211
+ * translators: $s is a size string like "728 x 90".
212
  * This string shows up on the ad edit page of image ads if the size entered for the ad is different from the size of the uploaded image.
213
  */
214
  esc_attr__( 'Original size: %s', 'advanced-ads' ), $width . '&nbsp;x&nbsp;' . $height ); ?></p><?php
215
  }
216
  }
217
+
218
  return '';
219
+
220
  }
221
 
222
  }
classes/frontend-notices.php ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Container class for frontend notice handling
5
+ *
6
+ * @package WordPress
7
+ * @subpackage Advanced Ads Plugin
8
+ * @since 1.16
9
+ *
10
+ * related scripts / functions
11
+ * @todo build interface or parent class to share with other notice management in Advanced Ads, e.g., Ad Health Notices
12
+ *
13
+ */
14
+ class Advanced_Ads_Frontend_Notices {
15
+
16
+ /**
17
+ * Instance of this class.
18
+ *
19
+ * @var object
20
+ */
21
+ protected static $instance = null;
22
+
23
+ /**
24
+ * Options
25
+ *
26
+ * @var array
27
+ */
28
+ protected $options;
29
+
30
+ /**
31
+ * All detected notices
32
+ *
33
+ * @var array
34
+ */
35
+ public $notices = array();
36
+
37
+ /**
38
+ * Advanced_Ads_Ad_Health_Notices constructor.
39
+ */
40
+ public function __construct() {
41
+
42
+ // failsafe for there were some reports of 502 errors.
43
+ if ( 1 < did_action( 'plugins_loaded' ) ) {
44
+ return;
45
+ }
46
+
47
+ }
48
+
49
+ /**
50
+ * Return an instance of this class.
51
+ *
52
+ * @return object A single instance of this class.
53
+ */
54
+ public static function get_instance() {
55
+
56
+ // If the single instance hasn't been set, set it now.
57
+ if ( null === self::$instance ) {
58
+ self::$instance = new self();
59
+ }
60
+
61
+ return self::$instance;
62
+ }
63
+
64
+ /**
65
+ * Updating an existing notice or add it, if it doesn’t exist, yet
66
+ *
67
+ * @param string $notice_key notice key to be added to the notice array.
68
+ * @param array $atts additional attributes.
69
+ *
70
+ * attributes:
71
+ * - append_text – text added to the default message
72
+ */
73
+ public function update( $notice_key, $atts = array() ) {
74
+
75
+ // check if the notice already exists.
76
+ $notice_key = esc_attr( $notice_key );
77
+ $options_before = $options = $this->options();
78
+
79
+ // load notices from "queue".
80
+ $notices = isset( $options['notices'] ) ? $options['notices'] : array();
81
+
82
+ // check if notice_key was already saved, this prevents the same notice from showing up in different forms.
83
+ if ( ! isset( $notices[ $notice_key ] ) ) {
84
+ $notices[ $notice_key ] = array();
85
+ } else {
86
+ // add `closed` marker, if given.
87
+ if ( ! empty( $atts['closed'] ) ) {
88
+ $notices[ $notice_key ]['closed'] = absint( $atts['closed'] );
89
+ }
90
+ }
91
+
92
+ // update db.
93
+ $options['notices'] = $notices;
94
+
95
+ // update db if changed.
96
+ if ( $options_before !== $options ) {
97
+ $this->update_options( $options );
98
+ }
99
+
100
+ }
101
+
102
+ /**
103
+ * Return notices option from DB
104
+ *
105
+ * @return array $options
106
+ */
107
+ public function options() {
108
+ if ( ! isset( $this->options ) ) {
109
+ $this->options = get_option( ADVADS_SLUG . '-frontend-notices', array() );
110
+ }
111
+ if ( ! is_array( $this->options ) ) {
112
+ $this->options = array();
113
+ }
114
+
115
+ return $this->options;
116
+ }
117
+
118
+ /**
119
+ * Update notice options
120
+ *
121
+ * @param array $options new options.
122
+ */
123
+ public function update_options( array $options ) {
124
+ // do not allow to clear options.
125
+ if ( array() === $options ) {
126
+ return;
127
+ }
128
+
129
+ $this->options = $options;
130
+ update_option( ADVADS_SLUG . '-frontend-notices', $options );
131
+ }
132
+ }
classes/frontend_checks.php CHANGED
@@ -95,7 +95,7 @@ class Advanced_Ads_Frontend_Checks {
95
  'title' => __( 'Random AdSense ads', 'advanced-ads' ),
96
  'href' => ADVADS_URL . 'adsense-in-random-positions-auto-ads/#utm_source=advancedads&utm_medium=link&utm_campaign=frontend-autoads-ads',
97
  'meta' => array(
98
- 'class' => 'hidden advanced_ads_ad_health_warning',
99
  'target' => '_blank'
100
  )
101
  ) );
@@ -121,7 +121,6 @@ class Advanced_Ads_Frontend_Checks {
121
  'parent' => 'advanced_ads_ad_health',
122
  'id' => 'advanced_ads_ad_health_adblocker_enabled',
123
  'title' => __( 'Ad blocker enabled', 'advanced-ads' ),
124
- // 'href' => 'https://wpadvancedads.com/support',
125
  'meta' => array(
126
  'class' => 'hidden advanced_ads_ad_health_warning',
127
  'target' => '_blank'
@@ -219,11 +218,11 @@ class Advanced_Ads_Frontend_Checks {
219
  if ( $wp_the_query->is_404() && ! empty( $options['disabled-ads']['404'] ) ) {
220
  $nodes[] = array( 1, array(
221
  'parent' => 'advanced_ads_ad_health',
222
- 'id' => 'advanced_ads_ad_health_no_404',
223
- 'title' => __( 'Ads are disabled on 404 pages', 'advanced-ads' ),
224
- 'href' => admin_url( 'admin.php?page=advanced-ads-settings' ),
225
  'meta' => array(
226
- 'class' => 'advanced_ads_ad_health_warning',
227
  'target' => '_blank'
228
  )
229
  ) );
@@ -232,11 +231,11 @@ class Advanced_Ads_Frontend_Checks {
232
  if ( ! $wp_the_query->is_singular() && ! empty( $options['disabled-ads']['archives'] ) ){
233
  $nodes[] = array( 'type' => 1, 'data' => array(
234
  'parent' => 'advanced_ads_ad_health',
235
- 'id' => 'advanced_ads_ad_health_no_archive',
236
- 'title' => __( 'Ads are disabled on non singular pages', 'advanced-ads' ),
237
- 'href' => admin_url( 'admin.php?page=advanced-ads-settings' ),
238
  'meta' => array(
239
- 'class' => 'advanced_ads_ad_health_warning',
240
  'target' => '_blank'
241
  )
242
  ) );
@@ -244,25 +243,25 @@ class Advanced_Ads_Frontend_Checks {
244
 
245
  $nodes[] = array( 'type' => 2, 'data' => array(
246
  'parent' => 'advanced_ads_ad_health',
247
- 'id' => 'advanced_ads_ad_health_has_http',
248
- 'title' => sprintf( '%s %s',
249
  __( 'Your website is using HTTPS, but the ad code contains HTTP and might not work.', 'advanced-ads' ),
250
  sprintf( __( 'Ad IDs: %s', 'advanced-ads' ), '<i></i>' )
251
  ),
252
- 'href' => 'https://wpadvancedads.com/manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-https-ads#https-ads',
253
  'meta' => array(
254
- 'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_has_http',
255
  'target' => '_blank'
256
  )
257
  ) );
258
 
259
  $nodes[] = array( 'type' => 2, 'data' => array(
260
  'parent' => 'advanced_ads_ad_health',
261
- 'id' => 'advanced_ads_ad_health_incorrect_head',
262
- 'title' => sprintf( __( 'Visible ads should not use the Header placement: %s', 'advanced-ads' ), '<i></i>' ),
263
- 'href' => 'https://wpadvancedads.com/manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-visible-ad-in-header#header-ads',
264
  'meta' => array(
265
- 'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_incorrect_head',
266
  'target' => '_blank'
267
  )
268
  ) );
@@ -277,7 +276,7 @@ class Advanced_Ads_Frontend_Checks {
277
  __( 'Ad is hidden', 'advanced-ads' ),
278
  sprintf( __( 'IDs: %s', 'advanced-ads' ), '<i></i>' )
279
  ),
280
- 'href' => 'https://wpadvancedads.com/manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-frontend-adsense-hidden#adsense-hidden',
281
  'meta' => array(
282
  'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_hidden_adsense',
283
  'target' => '_blank'
@@ -289,7 +288,7 @@ class Advanced_Ads_Frontend_Checks {
289
  'parent' => 'advanced_ads_ad_health',
290
  'id' => 'advanced_ads_ad_health_floated_responsive_adsense',
291
  'title' => sprintf( __( 'The following responsive AdSense ads are not showing up: %s', 'advanced-ads' ), '<i></i>' ),
292
- 'href' => 'https://wpadvancedads.com/manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-adsense-responsive-not-showing#The_following_responsive_AdSense_ads_arenot_showing_up',
293
  'meta' => array(
294
  'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_floated_responsive_adsense',
295
  'target' => '_blank'
@@ -313,31 +312,34 @@ class Advanced_Ads_Frontend_Checks {
313
 
314
  $nodes[] = array( 'type' => 3, 'data' => array(
315
  'parent' => 'advanced_ads_ad_health',
316
- 'id' => 'advanced_ads_ad_health_debug_dfp',
317
- 'title' => __( 'debug DFP ads', 'advanced-ads' ),
318
  'href' => esc_url( add_query_arg( 'google_force_console', '1' ) ),
319
  'meta' => array(
320
- 'class' => 'hidden advanced_ads_ad_health_debug_dfp_link',
321
- 'target' => '_blank',
322
  )
323
  ) );
324
 
325
- $nodes[] = array( 'type' => 3, 'amp' => false, 'data' => array(
326
- 'parent' => 'advanced_ads_ad_health',
327
- 'id' => 'advanced_ads_ad_health_highlight_ads',
328
- 'title' => sprintf( '<label style="color: inherit;"><input id="advanced_ads_highlight_ads_checkbox" type="checkbox"> %s</label>', __( 'highlight ads', 'advanced-ads' ) )
329
- ) );
330
-
331
- // search for AdSense Verification and Auto ads code
332
  $nodes[] = array( 'type' => 3, 'data' => array(
333
  'parent' => 'advanced_ads_ad_health',
334
  'id' => 'advanced_ads_ad_health_auto_ads_found',
335
  'title' => __( 'Auto ads code found', 'advanced-ads' ),
336
- 'href' => 'https://wpadvancedads.com/manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-adsense-auto-ads-found#Auto_ads_code_found',
337
  'meta' => array(
338
- 'class' => 'hidden advanced_ads_ad_health_highlight_ads',
339
  'target' => '_blank',
340
- )
 
 
 
 
 
 
 
 
 
 
341
  ) );
342
 
343
  /**
@@ -503,9 +505,47 @@ class Advanced_Ads_Frontend_Checks {
503
  ?><!-- Advanced Ads: <?php _e( 'the following code is used for automatic error detection and only visible to admins', 'advanced-ads' ); ?>-->
504
  <style>.hidden { display: none; }
505
  #wp-admin-bar-advanced_ads_ad_health-default a:after { content: "\25BA"; margin-left: .5em; font-size: smaller; }
 
 
506
  #wpadminbar .advanced-ads-issue-counter { background-color: #d54e21; display: none; padding: 1px 7px 1px 6px!important; border-radius: 50%; color: #fff; }
507
  #wpadminbar .advads-adminbar-is-warnings .advanced-ads-issue-counter { display: inline; }
508
- .advanced-ads-highlight-ads { outline:4px solid blue !important; }</style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
509
  <?php echo ob_get_clean();
510
 
511
  if ( advads_is_amp() ) {
@@ -574,12 +614,12 @@ class Advanced_Ads_Frontend_Checks {
574
  advanced_ads_frontend_checks.showCount();
575
  }
576
  },
577
-
578
  /**
579
  * Add item to Ad Health notices in the backend
580
  *
581
- * @param str key of the notice
582
- * @param {type} context
583
  * @returns {undefined}
584
  */
585
  add_item_to_notices: function( key, attr = '' ) {
@@ -607,6 +647,27 @@ class Advanced_Ads_Frontend_Checks {
607
  advads.set_cookie_sec( 'advanced_ads_ad_health_notices', notices_str, 3600 ); // 1 hour
608
  });
609
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
610
 
611
  /**
612
  * Search for hidden AdSense.
@@ -652,16 +713,21 @@ class Advanced_Ads_Frontend_Checks {
652
  obj.attachEvent( 'on' + type, function() { return fn.call( obj, window.event ); } );
653
  };
654
 
 
655
  function highlight_ads() {
 
 
 
 
 
656
  try {
657
- var ad_wrappers = document.querySelectorAll('div[id^="<?php echo Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();?>"]')
658
  } catch ( e ) { return; }
659
  for ( i = 0; i < ad_wrappers.length; i++ ) {
660
- if ( this.checked ) {
661
  ad_wrappers[i].className += ' advanced-ads-highlight-ads';
662
- } else {
663
- ad_wrappers[i].className = ad_wrappers[i].className.replace( 'advanced-ads-highlight-ads', '' );
664
- }
665
  }
666
  }
667
 
@@ -669,10 +735,9 @@ class Advanced_Ads_Frontend_Checks {
669
  var adblock_item = d.getElementById( 'wp-admin-bar-advanced_ads_ad_health_adblocker_enabled' );
670
  // jQuery_item = d.getElementById( 'wp-admin-bar-advanced_ads_ad_health_jquery' ),
671
 
672
- var highlight_checkbox = d.getElementById( 'advanced_ads_highlight_ads_checkbox' );
673
- if ( highlight_checkbox ) {
674
- addEvent( highlight_checkbox, 'change', highlight_ads );
675
- }
676
 
677
  if ( adblock_item && typeof advanced_ads_adblocker_test === 'undefined' ) {
678
  // show hidden item
@@ -697,24 +762,35 @@ class Advanced_Ads_Frontend_Checks {
697
 
698
  // highlight AdSense Auto Ads ads 3 seconds after site loaded
699
  setTimeout( function(){
700
- advanced_ads_ready( advads_highlight_adsense_autoads )
701
  }, 3000 );
702
  function advads_highlight_adsense_autoads(){
703
  if ( ! window.jQuery ) {
704
  window.console && window.console.log( 'Advanced Ads: jQuery not found. Some Ad Health warnings will not be displayed.' );
705
  return;
706
  }
707
- var autoads_ads = jQuery(document).find('.google-auto-placed');
 
708
  <?php /* jQuery( '<p class="advads-autoads-hint" style="background-color:#0085ba;color:#fff;font-size:0.8em;padding:5px;"><?php
709
  printf(__( 'This ad was automatically placed here by AdSense. <a href="%s" target="_blank" style="color:#fff;border-color:#fff;">Click here to learn more</a>.', 'advanced-ads' ), ADVADS_URL . 'adsense-in-random-positions-auto-ads/#utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-autoads-ads' );
710
  ?></p>' ).prependTo( autoads_ads ); */ ?>
711
  // show Auto Ads warning in Ad Health bar if relevant
 
712
  if( autoads_ads.length ){
713
  var advads_autoads_link = document.querySelector( '#wp-admin-bar-advanced_ads_autoads_displayed.hidden' );
714
  if ( advads_autoads_link ) {
715
  advads_autoads_link.className = advads_autoads_link.className.replace( 'hidden', '' );
716
  }
717
  advanced_ads_frontend_checks.showCount();
 
 
 
 
 
 
 
 
 
718
  }
719
  }
720
 
@@ -727,6 +803,83 @@ class Advanced_Ads_Frontend_Checks {
727
  }
728
  }
729
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
730
  <?php endif;
731
  /**
732
  * code to check if current user gave consent to show ads
@@ -743,6 +896,31 @@ class Advanced_Ads_Frontend_Checks {
743
  advanced_ads_frontend_checks.showCount();
744
  });
745
  <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
746
  })(document, window);
747
  </script>
748
  <?php echo Advanced_Ads_Utils::get_inline_asset( ob_get_clean() );
@@ -762,20 +940,6 @@ class Advanced_Ads_Frontend_Checks {
762
  return $content;
763
  }
764
 
765
- // Allow DFP debugging by showing a link that points to the current URL with the 'google_forec_console' parameter.
766
- if ( $ad->type === 'plain' && preg_match( '/gpt\.js/', $content ) ) {
767
- ob_start(); ?>
768
- <script>advanced_ads_ready( function() {
769
- var advads_dfp_link = document.querySelector( '.advanced_ads_ad_health_debug_dfp_link.hidden' );
770
- if ( advads_dfp_link ) {
771
- advads_dfp_link.className = advads_dfp_link.className.replace( 'hidden', '' );
772
- advanced_ads_frontend_checks.showCount();
773
- }
774
- });</script>
775
- <?php
776
- $content .= Advanced_Ads_Utils::get_inline_asset( ob_get_clean() );
777
- }
778
-
779
  if ( Advanced_Ads_Ad_Debug::is_https_and_http( $ad ) ) {
780
  ob_start(); ?>
781
  <script>advanced_ads_ready( function() {
95
  'title' => __( 'Random AdSense ads', 'advanced-ads' ),
96
  'href' => ADVADS_URL . 'adsense-in-random-positions-auto-ads/#utm_source=advancedads&utm_medium=link&utm_campaign=frontend-autoads-ads',
97
  'meta' => array(
98
+ 'class' => 'hidden',
99
  'target' => '_blank'
100
  )
101
  ) );
121
  'parent' => 'advanced_ads_ad_health',
122
  'id' => 'advanced_ads_ad_health_adblocker_enabled',
123
  'title' => __( 'Ad blocker enabled', 'advanced-ads' ),
 
124
  'meta' => array(
125
  'class' => 'hidden advanced_ads_ad_health_warning',
126
  'target' => '_blank'
218
  if ( $wp_the_query->is_404() && ! empty( $options['disabled-ads']['404'] ) ) {
219
  $nodes[] = array( 1, array(
220
  'parent' => 'advanced_ads_ad_health',
221
+ 'id' => 'advanced_ads_ad_health_no_404',
222
+ 'title' => __( 'Ads are disabled on 404 pages', 'advanced-ads' ),
223
+ 'href' => admin_url( 'admin.php?page=advanced-ads-settings' ),
224
  'meta' => array(
225
+ 'class' => 'advanced_ads_ad_health_warning',
226
  'target' => '_blank'
227
  )
228
  ) );
231
  if ( ! $wp_the_query->is_singular() && ! empty( $options['disabled-ads']['archives'] ) ){
232
  $nodes[] = array( 'type' => 1, 'data' => array(
233
  'parent' => 'advanced_ads_ad_health',
234
+ 'id' => 'advanced_ads_ad_health_no_archive',
235
+ 'title' => __( 'Ads are disabled on non singular pages', 'advanced-ads' ),
236
+ 'href' => admin_url( 'admin.php?page=advanced-ads-settings' ),
237
  'meta' => array(
238
+ 'class' => 'advanced_ads_ad_health_warning',
239
  'target' => '_blank'
240
  )
241
  ) );
243
 
244
  $nodes[] = array( 'type' => 2, 'data' => array(
245
  'parent' => 'advanced_ads_ad_health',
246
+ 'id' => 'advanced_ads_ad_health_has_http',
247
+ 'title' => sprintf( '%s %s',
248
  __( 'Your website is using HTTPS, but the ad code contains HTTP and might not work.', 'advanced-ads' ),
249
  sprintf( __( 'Ad IDs: %s', 'advanced-ads' ), '<i></i>' )
250
  ),
251
+ 'href' => ADVADS_URL . 'manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-https-ads#https-ads',
252
  'meta' => array(
253
+ 'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_has_http',
254
  'target' => '_blank'
255
  )
256
  ) );
257
 
258
  $nodes[] = array( 'type' => 2, 'data' => array(
259
  'parent' => 'advanced_ads_ad_health',
260
+ 'id' => 'advanced_ads_ad_health_incorrect_head',
261
+ 'title' => sprintf( __( 'Visible ads should not use the Header placement: %s', 'advanced-ads' ), '<i></i>' ),
262
+ 'href' => ADVADS_URL . 'manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-visible-ad-in-header#header-ads',
263
  'meta' => array(
264
+ 'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_incorrect_head',
265
  'target' => '_blank'
266
  )
267
  ) );
276
  __( 'Ad is hidden', 'advanced-ads' ),
277
  sprintf( __( 'IDs: %s', 'advanced-ads' ), '<i></i>' )
278
  ),
279
+ 'href' => ADVADS_URL . 'manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-frontend-adsense-hidden#adsense-hidden',
280
  'meta' => array(
281
  'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_hidden_adsense',
282
  'target' => '_blank'
288
  'parent' => 'advanced_ads_ad_health',
289
  'id' => 'advanced_ads_ad_health_floated_responsive_adsense',
290
  'title' => sprintf( __( 'The following responsive AdSense ads are not showing up: %s', 'advanced-ads' ), '<i></i>' ),
291
+ 'href' => ADVADS_URL . 'manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-adsense-responsive-not-showing#The_following_responsive_AdSense_ads_arenot_showing_up',
292
  'meta' => array(
293
  'class' => 'hidden advanced_ads_ad_health_warning advanced_ads_ad_health_floated_responsive_adsense',
294
  'target' => '_blank'
312
 
313
  $nodes[] = array( 'type' => 3, 'data' => array(
314
  'parent' => 'advanced_ads_ad_health',
315
+ 'id' => 'advanced_ads_ad_health_gam_debug',
316
+ 'title' => __( 'Debug Google Ad Manager', 'advanced-ads' ),
317
  'href' => esc_url( add_query_arg( 'google_force_console', '1' ) ),
318
  'meta' => array(
319
+ 'class' => 'hidden advanced_ads_ad_health_gam_debug_link',
 
320
  )
321
  ) );
322
 
323
+ // search for AdSense Verification and Auto ads code.
 
 
 
 
 
 
324
  $nodes[] = array( 'type' => 3, 'data' => array(
325
  'parent' => 'advanced_ads_ad_health',
326
  'id' => 'advanced_ads_ad_health_auto_ads_found',
327
  'title' => __( 'Auto ads code found', 'advanced-ads' ),
328
+ 'href' => ADVADS_URL . 'manual/ad-health/?utm_source=advanced-ads&utm_medium=link&utm_campaign=adhealth-adsense-auto-ads-found#Auto_ads_code_found',
329
  'meta' => array(
330
+ 'class' => 'hidden advanced_ads_ad_health_auto_ads_found',
331
  'target' => '_blank',
332
+ ),
333
+ ) );
334
+
335
+ // link to highlight ads and jump from one ad to the next
336
+ $nodes[] = array( 'type' => 3, 'amp' => false, 'data' => array(
337
+ 'parent' => 'advanced_ads_ad_health',
338
+ 'id' => 'advanced_ads_ad_health_highlight_ads',
339
+ 'title' => __( 'highlight ads', 'advanced-ads' ),
340
+ 'meta' => array(
341
+ 'class' => 'advanced_ads_ad_health_highlight_ads',
342
+ ),
343
  ) );
344
 
345
  /**
505
  ?><!-- Advanced Ads: <?php _e( 'the following code is used for automatic error detection and only visible to admins', 'advanced-ads' ); ?>-->
506
  <style>.hidden { display: none; }
507
  #wp-admin-bar-advanced_ads_ad_health-default a:after { content: "\25BA"; margin-left: .5em; font-size: smaller; }
508
+ #wp-admin-bar-advanced_ads_ad_health-default .advanced_ads_ad_health_highlight_ads div:before { content: "\f177"; margin-right: .2em; line-height: 1em; padding: 0.2em 0 0; color: inherit; }
509
+ #wp-admin-bar-advanced_ads_ad_health-default .advanced_ads_ad_health_highlight_ads div:hover { color: #00b9eb; cursor: pointer; }
510
  #wpadminbar .advanced-ads-issue-counter { background-color: #d54e21; display: none; padding: 1px 7px 1px 6px!important; border-radius: 50%; color: #fff; }
511
  #wpadminbar .advads-adminbar-is-warnings .advanced-ads-issue-counter { display: inline; }
512
+ .advanced-ads-highlight-ads { outline:4px solid blue !important; }
513
+
514
+ .advads-frontend-notice { display: none; position: fixed; top: 0; z-index: 1000; left: 50%; max-width: 500px; margin-left: -250px; padding: 30px 10px 10px 10px; border: 0px solid #0074a2; border-top: 0; border-radius: 0px 0px 5px 5px; box-shadow: 0px 0px 15px rgba(0,0,0,0.3); background: #ffffff; background: rgba(255,255,255,0.95); font-size: 16px; font-family: Arial, Verdana, sans-serif; line-height: 1.5em; color: #444444; }
515
+
516
+ .advads-frontend-notice a, .advads-frontend-notice a:link { color: #0074a2; text-decoration: none; }
517
+ .advads-frontend-notice ul { }
518
+ .advads-frontend-notice ul li { line-height: 1.5em; }
519
+
520
+ .advads-frontend-notice .advads-close-notice { position: absolute; top: 5px; right: 0; display: block; font-size: 20px; width: 30px; height: 30px; line-height: 30px; text-decoration: none; text-align: center; font-weight: bold; color: #444444; cursor: pointer; }
521
+ .advads-frontend-notice .advads-notice-var1 { font-size: 14px; font-style: italic; text-align: center; text-align: 1.3em; }
522
+ .advads-frontend-notice .advads-frontend-notice-choice { text-align: center; }
523
+ .advads-frontend-notice .advads-frontend-notice-choice:after { display: block; content: " "; clear: both; }
524
+
525
+ /* CSS Smilies */
526
+ .advads-smiley { position: relative; display: inline-block; border: 4px solid #0074a2; border-radius: 50px; width: 65px; height: 65px; background: #ffffff; cursor: pointer; margin: 0px 15px 5px 0px; }
527
+ .advads-smiley:hover { transform: scale(0.90); transition: all linear 0.3s; }
528
+ .advads-smiley .eye { display: block; position: absolute; top: 25%; width: 18%; height: 18%; background: #0074a2; border-radius: 50%; }
529
+ .advads-smiley .eye1 { left: 20%; }
530
+ .advads-smiley .eye2 { right: 20%; }
531
+ .advads-smiley .mouth { display: block; position: absolute; left: 20%; top: 15%; width: 60%; height: 60%; border-bottom: 5px solid #0074a2; background: none; }
532
+
533
+ /* CSS smiley: negative */
534
+ .advads-smiley-negative { /* border-color: #9a2d18; */ }
535
+ .advads-smiley-negative .mouth { top: 50%; border: 5px solid #0074a2; width: 60%px; height: 60%; transform: rotate(-45deg); border-bottom-color: transparent; border-left-color: transparent; border-radius: 50%; }
536
+
537
+ /* CSS smiley: positive */
538
+ .advads-smiley-positive { /* border-color: #1e610f; */ }
539
+ .advads-smiley-positive .mouth { top: 25%; border: 5px solid #0074a2; width: 60%px; height: 60%; transform: rotate(-45deg); border-top-color: transparent; border-right-color: transparent; border-radius: 50%; }
540
+
541
+ /* CSS smiley: neutral */
542
+ .advads-smiley-laugh .mouth { top: 25%; border-radius: 50%; }
543
+
544
+ @media screen and (max-width: 510px) {
545
+ .advads-frontend-notice { left: 0; width: 100%; margin-left: 0; }
546
+ .advads-smiley { width: 45px; height: 45px; }
547
+ }
548
+ </style>
549
  <?php echo ob_get_clean();
550
 
551
  if ( advads_is_amp() ) {
614
  advanced_ads_frontend_checks.showCount();
615
  }
616
  },
617
+
618
  /**
619
  * Add item to Ad Health notices in the backend
620
  *
621
+ * @param key of the notice
622
+ * @param attr
623
  * @returns {undefined}
624
  */
625
  add_item_to_notices: function( key, attr = '' ) {
647
  advads.set_cookie_sec( 'advanced_ads_ad_health_notices', notices_str, 3600 ); // 1 hour
648
  });
649
  },
650
+ /**
651
+ * Update status of frontend notices
652
+ *
653
+ * @param key of the notice
654
+ * @param attr
655
+ * @returns {undefined}
656
+ */
657
+ update_frontend_notices: function( key, attr = '' ) {
658
+ var query = {
659
+ action: 'advads-ad-frontend-notice-update',
660
+ key: key,
661
+ attr: attr,
662
+ nonce: '<?php echo wp_create_nonce('advanced-ads-frontend-notice-nonce'); ?>'
663
+ };
664
+ // send query
665
+ jQuery.post( advads_frontend_checks.ajax_url, query, function (r) {})
666
+ // close message when done.
667
+ .done(function() {
668
+ content_obj.slideUp();
669
+ });
670
+ },
671
 
672
  /**
673
  * Search for hidden AdSense.
713
  obj.attachEvent( 'on' + type, function() { return fn.call( obj, window.event ); } );
714
  };
715
 
716
+ // highlight ads that use Advanced Ads placements or AdSense Auto ads
717
  function highlight_ads() {
718
+ /**
719
+ * Selectors:
720
+ * Placement container: div[id^="<?php echo Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();?>"]
721
+ * AdSense Auto ads: 'google-auto-placed'
722
+ */
723
  try {
724
+ var ad_wrappers = document.querySelectorAll('div[id^="<?php echo Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();?>"],.google-auto-placed')
725
  } catch ( e ) { return; }
726
  for ( i = 0; i < ad_wrappers.length; i++ ) {
727
+ ad_wrappers[i].title = ad_wrappers[i].className;
728
  ad_wrappers[i].className += ' advanced-ads-highlight-ads';
729
+ // in case we want to remove it later
730
+ // ad_wrappers[i].className = ad_wrappers[i].className.replace( 'advanced-ads-highlight-ads', '' );
 
731
  }
732
  }
733
 
735
  var adblock_item = d.getElementById( 'wp-admin-bar-advanced_ads_ad_health_adblocker_enabled' );
736
  // jQuery_item = d.getElementById( 'wp-admin-bar-advanced_ads_ad_health_jquery' ),
737
 
738
+ // handle click on the highlight_ads link
739
+ var highlight_link = d.getElementById( 'wp-admin-bar-advanced_ads_ad_health_highlight_ads' );
740
+ addEvent( highlight_link, 'click', highlight_ads );
 
741
 
742
  if ( adblock_item && typeof advanced_ads_adblocker_test === 'undefined' ) {
743
  // show hidden item
762
 
763
  // highlight AdSense Auto Ads ads 3 seconds after site loaded
764
  setTimeout( function(){
765
+ advanced_ads_ready( advads_highlight_adsense_autoads );
766
  }, 3000 );
767
  function advads_highlight_adsense_autoads(){
768
  if ( ! window.jQuery ) {
769
  window.console && window.console.log( 'Advanced Ads: jQuery not found. Some Ad Health warnings will not be displayed.' );
770
  return;
771
  }
772
+ var autoads_ads = document.querySelectorAll('.google-auto-placed');
773
+ var autoads_code_enabled = document.querySelectorAll('#wp-admin-bar-advanced_ads_ad_health_auto_ads_found:not(.hidden)').length;
774
  <?php /* jQuery( '<p class="advads-autoads-hint" style="background-color:#0085ba;color:#fff;font-size:0.8em;padding:5px;"><?php
775
  printf(__( 'This ad was automatically placed here by AdSense. <a href="%s" target="_blank" style="color:#fff;border-color:#fff;">Click here to learn more</a>.', 'advanced-ads' ), ADVADS_URL . 'adsense-in-random-positions-auto-ads/#utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-autoads-ads' );
776
  ?></p>' ).prependTo( autoads_ads ); */ ?>
777
  // show Auto Ads warning in Ad Health bar if relevant
778
+ <?php $frontend_notices = Advanced_Ads_Plugin::show_to_new_users( 1580126400, 'a' ) ? get_option( 'advanced-ads-frontend-notices' ) : array( 'notices' => array( 'auto-ads-with-ads' => true, 'auto-ads-without-ads' => true ) ); ?>
779
  if( autoads_ads.length ){
780
  var advads_autoads_link = document.querySelector( '#wp-admin-bar-advanced_ads_autoads_displayed.hidden' );
781
  if ( advads_autoads_link ) {
782
  advads_autoads_link.className = advads_autoads_link.className.replace( 'hidden', '' );
783
  }
784
  advanced_ads_frontend_checks.showCount();
785
+ <?php if( ! isset( $frontend_notices['notices']['auto-ads-with-ads'] ) ) : ?>
786
+ // show notice about Auto ads existing on the site
787
+ advads_frontend_notice( 'auto-ads-with-ads' );
788
+ <?php endif; ?>
789
+ } else if ( autoads_code_enabled ) {
790
+ <?php if( ! isset( $frontend_notices['notices']['auto-ads-without-ads'] ) ) : ?>
791
+ // show notice about Auto ads code without any ads placed
792
+ advads_frontend_notice( 'auto-ads-without-ads' );
793
+ <?php endif; ?>
794
  }
795
  }
796
 
803
  }
804
  }
805
  }
806
+ // show notice
807
+ // @param notice
808
+ function advads_frontend_notice( notice = '' ){
809
+ var content = '';
810
+ switch ( notice ) {
811
+ case 'auto-ads-with-ads' :
812
+ var autoads_ads = jQuery(document).find('.google-auto-placed');
813
+ <?php $current_user = get_current_user(); $current_user_nicename = isset( $current_user->user_nicename ) ? $current_user->user_nicename : 'admin'; ?>
814
+ content = '' +
815
+ '<p style="text-align: center;"><strong><?php printf( __( 'Hi %s', 'advanced-ads'), $current_user_nicename ); ?></strong><br><?php printf( __( 'Advanced Ads detected AdSense Auto ads (%sx) on this page.', 'advanced-ads' ), 'AUTO_ADS_NUM' ); ?><br><?php esc_attr_e( 'Is that correct?', 'advanced-ads' ); ?></p>' +
816
+ '<div class="advads-frontend-notice-choice">' +
817
+ '<span class="advads-close advads-smiley advads-smiley-positive" title="<?php esc_attr_e( 'All is fine', 'advanced-ads' ); ?>"><i class="eye eye1"></i><i class="eye eye2"></i><i class="mouth"></i></span>' +
818
+ '<span class="advads-choice-negative advads-smiley" title="<?php esc_attr_e( 'Something is off', 'advanced-ads' ); ?>"><i class="eye eye1"></i><i class="eye eye2"></i><i class="mouth"></i></span>' +
819
+ '</div>' +
820
+ '<p class="advads-notice-var1"><?php esc_attr_e( 'This is a one-time check from your friendly Advanced Ads plugin. It is only visible to you.', 'advanced-ads' ); ?></p>';
821
+ // dynamically add the number of Auto ads found.
822
+ content = content.replace( 'AUTO_ADS_NUM', autoads_ads.length );
823
+ break;
824
+ case 'auto-ads-without-ads' :
825
+ <?php $current_user = get_current_user(); $current_user_nicename = isset( $current_user->user_nicename ) ? $current_user->user_nicename : 'admin'; ?>
826
+ content = '' +
827
+ '<p style="text-align: center;"><strong><?php printf( __( 'Hi %s', 'advanced-ads'), $current_user_nicename ); ?></strong><br><?php printf( __( 'Advanced Ads detected the AdSense Auto ads code and <strong>no ads on this page</strong>.', 'advanced-ads' ) ); ?><br/><?php esc_attr_e( 'Is that correct?', 'advanced-ads' ); ?></p>' +
828
+ '<div class="advads-frontend-notice-choice">' +
829
+ '<span class="advads-close advads-smiley advads-smiley-positive" title="<?php esc_attr_e( 'This is fine', 'advanced-ads' ); ?>"><i class="eye eye1"></i><i class="eye eye2"></i><i class="mouth"></i></span>' +
830
+ '<span class="advads-choice-negative advads-smiley" title="<?php esc_attr_e( 'I expected something else', 'advanced-ads' ); ?>"><i class="eye eye1"></i><i class="eye eye2"></i><i class="mouth"></i></span>' +
831
+ '</div>' +
832
+ '<p class="advads-notice-var1"><?php esc_attr_e( 'PS: this is a one-time check from your friendly Advanced Ads plugin. It is only visible to you.', 'advanced-ads' ); ?></p>';
833
+ break;
834
+ case 'auto-ads-with-ads-help' :
835
+ content = '<p style="text-align: center;"><?php esc_attr_e( 'Just click on your problem to learn more from our knowledge base.', 'advanced-ads' ); ?></p>' +
836
+ '<ul><li><a href="<?php echo esc_url( ADVADS_URL ); ?>adsense-in-random-positions-auto-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-auto-ads-disable#How_to_disable_Auto_Ads" target="_blank"><?php esc_attr_e( 'I want to disable AdSense Auto ads', 'advanced-ads' ); ?></a></li>' +
837
+ '<li><a href="<?php echo esc_url( ADVADS_URL ); ?>manual/adsense-auto-ads-not-showing/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-auto-ads" target="_blank"><?php esc_attr_e( 'I don’t see any Auto ads', 'advanced-ads' ); ?></a></li>' +
838
+ '<li><a href="<?php echo esc_url( ADVADS_URL ); ?>manual/adsense-auto-ads-not-showing/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-auto-ads-blank#Auto_ads_stay_blank" target="_blank"><?php esc_attr_e( 'I only see blank space', 'advanced-ads' ); ?></a></li>' +
839
+ '<li><a href="<?php echo esc_url( ADVADS_URL ); ?>place-adsense-ad-unit-manually/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-auto-ads-position" target="_blank"><?php esc_attr_e( 'I want to change the position of the ads', 'advanced-ads' ); ?></a></li>' +
840
+ '<li><a href="<?php echo esc_url( ADVADS_URL ); ?>adsense-auto-ads-wordpress/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-auto-ads-specific-pages#Display_Auto_Ads_only_on_specific_pages" target="_blank"><?php esc_attr_e( 'Display Auto ads only on specific pages', 'advanced-ads' ); ?></a></li></ul>';
841
+ break;
842
+ case 'auto-ads-without-ads-help' :
843
+ content = '<p style="text-align: center;"><?php esc_attr_e( 'Just click on your problem to learn more from our knowledge base.', 'advanced-ads' ); ?></p>' +
844
+ '<ul><li><a href="<?php echo esc_url( ADVADS_URL ); ?>manual/adsense-auto-ads-not-showing/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-no-auto-ads" target="_blank"><?php esc_attr_e( 'I don’t see any Auto ads', 'advanced-ads' ); ?></a></li>' +
845
+ '<li><a href="<?php echo esc_url( ADVADS_URL ); ?>manual/adsense-auto-ads-not-showing/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-no-auto-ads-check-code#Check_if_the_Auto_ads_code_exists" target="_blank"><?php esc_attr_e( 'How to look for the Auto ads code', 'advanced-ads' ); ?></a></li>' +
846
+ '<li><a href="<?php echo esc_url( ADVADS_URL ); ?>support/?utm_source=advanced-ads&utm_medium=link&utm_campaign=frontend-no-auto-ads-support" target="_blank"><?php esc_attr_e( 'I have another question or problem', 'advanced-ads' ); ?></a></li></ul>';
847
+ break;
848
+ case 'closing' : // show until message is closed.
849
+ content = '<p><?php esc_attr_e( 'Closing the message', 'advanced-ads' ); ?>...</p>';
850
+ break;
851
+ }
852
+ if( content ){
853
+ // get existing content box or create new one.
854
+ if( jQuery( '.advads-frontend-notice' ).length ){
855
+ content_obj = jQuery( '.advads-frontend-notice' );
856
+ } else {
857
+ content_obj = jQuery( '<div class="advads-frontend-notice" data-choice="' + notice + '" style="display: none;"><span class="advads-close advads-close-notice">✕</span><div class="advads-content"></div></div>' );
858
+ }
859
+ // add content to the box.
860
+ content_obj.find( '.advads-content' ).html( content );
861
+ if( document.getElementById( 'wpadminbar' ) ){
862
+ content_obj.css( 'top', jQuery( '#wpadminbar' ).height() );
863
+ }
864
+ jQuery( content_obj ).appendTo( 'body' ).slideDown();
865
+ // register close event
866
+ content_obj.on( 'click', '.advads-close', function(){
867
+ // get notice
868
+ if( content_obj.data( 'choice' ) ){
869
+ advads_frontend_notice( 'closing' );
870
+ advanced_ads_frontend_checks.update_frontend_notices( content_obj.data( 'choice' ) );
871
+ }
872
+ // message is hidden in update_frontend_notices
873
+ });
874
+ // register button choice
875
+ jQuery( '.advads-frontend-notice[data-choice="auto-ads-with-ads"]' ).on( 'click', '.advads-choice-negative', function(){
876
+ advads_frontend_notice( 'auto-ads-with-ads-help' );
877
+ });
878
+ jQuery( '.advads-frontend-notice[data-choice="auto-ads-without-ads"]' ).on( 'click', '.advads-choice-negative', function(){
879
+ advads_frontend_notice( 'auto-ads-without-ads-help' );
880
+ });
881
+ }
882
+ }
883
  <?php endif;
884
  /**
885
  * code to check if current user gave consent to show ads
896
  advanced_ads_frontend_checks.showCount();
897
  });
898
  <?php endif; ?>
899
+ /**
900
+ * show Google Ad Manager debug link in Ad Health
901
+ *
902
+ * checks if window.googletag is defined
903
+ * look for container with ID starting with `div-gpt-ad-`
904
+ * does not look for `gpt-ad-` as used by our inline tags since they contain window.googletag as well
905
+ */
906
+ function advads_gam_show_debug_link(){
907
+ var advads_gam_debug_link = document.querySelector( '.advanced_ads_ad_health_gam_debug_link.hidden' );
908
+
909
+ if( ! advads_gam_debug_link ){
910
+ return;
911
+ }
912
+
913
+ // initialized by the GAM header tag or inline body tags
914
+ if( window.googletag ){
915
+ advads_gam_debug_link.className = advads_gam_debug_link.className.replace( 'hidden', '' );
916
+ } else if ( document.querySelector( '[id^="div-gpt-ad-"]' ) ) {
917
+ advads_gam_debug_link.className = advads_gam_debug_link.className.replace( 'hidden', '' );
918
+ }
919
+ }
920
+ // look for Google Ad Manager tags with a delay of 2 seconds
921
+ setTimeout( function(){
922
+ advanced_ads_ready( advads_gam_show_debug_link );
923
+ }, 2000 );
924
  })(document, window);
925
  </script>
926
  <?php echo Advanced_Ads_Utils::get_inline_asset( ob_get_clean() );
940
  return $content;
941
  }
942
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
943
  if ( Advanced_Ads_Ad_Debug::is_https_and_http( $ad ) ) {
944
  ob_start(); ?>
945
  <script>advanced_ads_ready( function() {
classes/plugin.php CHANGED
@@ -459,12 +459,6 @@ class Advanced_Ads_Plugin {
459
  $this->options = get_option( ADVADS_SLUG, array() );
460
  }
461
 
462
- // disable Ad Health by default for new users.
463
- if ( ! isset( $this->options['disable-notices'] )
464
- && self::show_to_new_users( 1575892800, 'b' ) ) {
465
- $this->options['disable-notices'] = 1;
466
- }
467
-
468
  return $this->options;
469
  }
470
 
459
  $this->options = get_option( ADVADS_SLUG, array() );
460
  }
461
 
 
 
 
 
 
 
462
  return $this->options;
463
  }
464
 
languages/advanced-ads.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Advanved Ads\n"
5
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
6
- "POT-Creation-Date: 2019-12-15 09:05+0000\n"
7
  "POT-Revision-Date: Wed Jul 13 2016 13:23:05 GMT+0200 (CEST)\n"
8
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
@@ -23,149 +23,136 @@ msgstr ""
23
  "X-Poedit-Basepath: ../\n"
24
  "X-Poedit-SearchPath-0: ."
25
 
26
- #: admin/class-advanced-ads-admin.php:232 classes/display-conditions.php:282
27
- #: classes/visitor-conditions.php:298
28
- #: modules/gadsense/admin/views/external-ads-links.php:17
29
- #: modules/gadsense/admin/views/external-ads-links.php:21
30
- #: modules/gadsense/admin/views/external-ads-links.php:28
31
- msgid "or"
32
  msgstr ""
33
 
34
- #: admin/class-advanced-ads-admin.php:233 classes/display-conditions.php:282
35
- #: classes/visitor-conditions.php:298
36
- msgid "and"
37
  msgstr ""
38
 
39
- #: admin/class-advanced-ads-admin.php:234
40
- msgid "After which paragraph?"
 
 
41
  msgstr ""
42
 
43
- #: admin/class-advanced-ads-admin.php:236
44
- msgid "Today"
45
  msgstr ""
46
 
47
- #: admin/class-advanced-ads-admin.php:237
48
- msgid "Yesterday"
49
  msgstr ""
50
 
51
- #: admin/class-advanced-ads-admin.php:238
52
- msgid "This Month"
53
  msgstr ""
54
 
55
- #. 1: The number of days.
56
- #: admin/class-advanced-ads-admin.php:240
57
- #, php-format
58
- msgid "Last %1$d days"
59
  msgstr ""
60
 
61
- #: admin/class-advanced-ads-admin.php:243
62
- msgid "All"
63
  msgstr ""
64
 
65
- #: admin/class-advanced-ads-admin.php:244
66
- msgid ""
67
- "There were no results returned for this ad. Please make sure it is active, "
68
- "generating impressions and double check your ad parameters."
69
  msgstr ""
70
 
71
- #: admin/class-advanced-ads-admin.php:245
72
- #: modules/gadsense/admin/views/external-ads-list.php:12
73
- msgid "Show inactive ads"
74
  msgstr ""
75
 
76
- #: admin/class-advanced-ads-admin.php:246
77
- msgid "Hide inactive ads"
78
  msgstr ""
79
 
80
- #: admin/class-advanced-ads-admin.php:360
81
  #, php-format
82
- msgid "time of %s"
83
- msgstr ""
84
-
85
- #: admin/class-advanced-ads-admin.php:434 admin/includes/class-menu.php:113
86
- #: admin/includes/class-menu.php:116 admin/views/settings.php:28
87
- msgid "Support"
88
- msgstr ""
89
-
90
- #: admin/class-advanced-ads-admin.php:438
91
- #: admin/includes/class-overview-widgets.php:58
92
- msgid "Add-Ons"
93
  msgstr ""
94
 
95
- #: admin/class-advanced-ads-admin.php:707
96
- #: admin/includes/class-overview-widgets.php:181
97
  #, php-format
98
  msgid ""
99
- "Thank the developer with a &#9733;&#9733;&#9733;&#9733;&#9733; review on <a "
100
- "href=\"%s\" target=\"_blank\">wordpress.org</a>"
101
  msgstr ""
102
 
103
- #: classes/ad-debug.php:32
104
- msgid "The ad is displayed on the page"
105
  msgstr ""
106
 
107
- #: classes/ad-debug.php:34
108
- msgid "The ad is not displayed on the page"
109
  msgstr ""
110
 
111
- #: classes/ad-debug.php:39
112
- msgid "Current query is not identical to main query."
113
  msgstr ""
114
 
115
- #: classes/ad-debug.php:45
116
- msgid "current post"
117
  msgstr ""
118
 
119
- #: classes/ad-debug.php:49
120
- msgid "Current post is not identical to main post."
121
  msgstr ""
122
 
123
- #: classes/ad-debug.php:51
124
- msgid "main post"
125
  msgstr ""
126
 
127
- #: classes/ad-debug.php:98
128
- msgid "current query"
 
129
  msgstr ""
130
 
131
- #: classes/ad-debug.php:98
132
- msgid "main query"
133
  msgstr ""
134
 
135
- #: classes/ad-debug.php:118 classes/ad-debug.php:167 classes/ad-debug.php:169
136
- #: public/class-advanced-ads.php:739 admin/views/ad-group-list-ads.php:13
137
- msgid "Ad"
138
  msgstr ""
139
 
140
- #: classes/ad-debug.php:121 public/class-advanced-ads.php:702
141
- msgctxt "ad group singular name"
142
- msgid "Ad Group"
143
  msgstr ""
144
 
145
- #: classes/ad-debug.php:128
146
- msgid "Placement"
147
  msgstr ""
148
 
149
- #: classes/ad-debug.php:152 admin/includes/class-meta-box.php:79
150
- msgid "Display Conditions"
151
  msgstr ""
152
 
153
- #: classes/ad-debug.php:239 admin/includes/class-meta-box.php:82
154
- msgid "Visitor Conditions"
155
  msgstr ""
156
 
157
- #: classes/ad-debug.php:272 classes/frontend_checks.php:249
158
- #: admin/includes/ad-health-notices.php:165
159
- msgid ""
160
- "Your website is using HTTPS, but the ad code contains HTTP and might not "
161
- "work."
162
  msgstr ""
163
 
164
- #. %1$s is an anchor (link) opening tag, %2$s is the closing tag.
165
- #: classes/ad-health-notices.php:865
166
- #: modules/gadsense/includes/class-mapi.php:1407
 
 
 
 
 
 
167
  #, php-format
168
- msgid "Learn more about AdSense account issues %1$shere%2$s."
169
  msgstr ""
170
 
171
  #: classes/ad_ajax_callbacks.php:236
@@ -261,161 +248,354 @@ msgstr ""
261
  msgid "headline 4 (%s)"
262
  msgstr ""
263
 
264
- #: classes/ad_placements.php:765
265
  #, php-format
266
  msgid "Set <em>%s</em> to show more ads"
267
  msgstr ""
268
 
269
- #: classes/ad_placements.php:766 admin/includes/class-settings.php:160
270
  msgid "Disable level limitation"
271
  msgstr ""
272
 
273
- #: classes/ad_type_content.php:35
274
- msgid "Rich Content"
275
  msgstr ""
276
 
277
- #: classes/ad_type_content.php:36
278
- msgid ""
279
- "The full content editor from WordPress with all features like shortcodes, "
280
- "image upload or styling, but also simple text/html mode for scripts and code."
281
  msgstr ""
282
 
283
- #: classes/ad_type_dummy.php:26
284
- msgid "Dummy"
285
  msgstr ""
286
 
287
- #: classes/ad_type_dummy.php:27
288
- msgid "Uses a simple placeholder ad for quick testing."
 
289
  msgstr ""
290
 
291
- #: classes/ad_type_dummy.php:45 classes/ad_type_image.php:64
292
- msgid "URL"
293
  msgstr ""
294
 
295
- #: classes/ad_type_group.php:30 admin/views/ad-group-list-header.php:15
296
- msgid "Ad Group"
297
  msgstr ""
298
 
299
- #: classes/ad_type_group.php:31
300
- msgid ""
301
- "Choose an existing ad group. Use this type when you want to assign the same "
302
- "display and visitor conditions to all ads in that group."
303
  msgstr ""
304
 
305
- #: classes/ad_type_group.php:85
306
- msgid "ad group"
307
  msgstr ""
308
 
309
- #: classes/ad_type_image.php:34
310
- msgid "Image Ad"
311
  msgstr ""
312
 
313
- #: classes/ad_type_image.php:35
314
- msgid "Ads in various image formats."
315
  msgstr ""
316
 
317
- #: classes/ad_type_image.php:55
318
- msgid "Insert File"
 
 
 
319
  msgstr ""
320
 
321
- #: classes/ad_type_image.php:55
322
- msgid "Insert"
 
323
  msgstr ""
324
 
325
- #: classes/ad_type_image.php:55
326
- msgid "select image"
 
327
  msgstr ""
328
 
329
- #: classes/ad_type_image.php:56
330
- msgid "edit"
331
  msgstr ""
332
 
333
- #: classes/ad_type_image.php:68
334
- msgid "Link to target site including http(s)"
335
  msgstr ""
336
 
337
- #. $s is a size string like "728 x 90".
338
- #. This string shows up on the ad edit page of
339
- #. image ads if the size entered for the ad is
340
- #. different from the size of the uploaded image.
341
- #: classes/ad_type_image.php:205
342
  #, php-format
343
- msgid "Original size: %s"
344
  msgstr ""
345
 
346
- #: classes/ad_type_plain.php:32
347
- msgid "Plain Text and Code"
 
348
  msgstr ""
349
 
350
- #: classes/ad_type_plain.php:33
351
- msgid ""
352
- "Any ad network, Amazon, customized AdSense codes, shortcodes, and code like "
353
- "JavaScript, HTML or PHP."
354
  msgstr ""
355
 
356
- #: classes/ad_type_plain.php:54
357
- msgid "Insert plain text or code into this field."
358
  msgstr ""
359
 
360
- #: classes/ad_type_plain.php:95
361
- msgid "Allow PHP"
362
  msgstr ""
363
 
364
- #: classes/ad_type_plain.php:99
365
- msgid "Execute PHP code (wrapped in <code>&lt;?php ?&gt;</code>)"
366
  msgstr ""
367
 
368
- #: classes/ad_type_plain.php:102
369
- msgid "No PHP tag detected in your code."
370
  msgstr ""
371
 
372
- #: classes/ad_type_plain.php:102 classes/ad_type_plain.php:125
373
- msgid "Uncheck this checkbox for improved performance."
 
374
  msgstr ""
375
 
376
- #: classes/ad_type_plain.php:117
377
- msgid "Allow shortcodes"
378
  msgstr ""
379
 
380
- #: classes/ad_type_plain.php:122
381
- msgid "Execute shortcodes"
382
  msgstr ""
383
 
384
- #: classes/ad_type_plain.php:125
385
- msgid "No shortcode detected in your code."
 
 
386
  msgstr ""
387
 
388
- #: classes/display-conditions.php:88
389
- msgid "post type"
 
390
  msgstr ""
391
 
392
- #: classes/display-conditions.php:89 includes/array_ad_conditions.php:40
393
- msgid "Choose the public post types on which to display the ad."
 
394
  msgstr ""
395
 
396
- #: classes/display-conditions.php:96
397
- msgid "specific pages"
398
  msgstr ""
399
 
400
- #: classes/display-conditions.php:97 includes/array_ad_conditions.php:58
401
- msgid ""
402
- "Choose on which individual posts, pages and public post type pages you want "
403
- "to display or hide ads."
404
  msgstr ""
405
 
406
- #: classes/display-conditions.php:103
407
- msgid "general conditions"
408
  msgstr ""
409
 
410
- #: classes/display-conditions.php:110
411
- msgid "author"
 
 
412
  msgstr ""
413
 
414
- #: classes/display-conditions.php:117
415
- msgid "content age"
 
 
416
  msgstr ""
417
 
418
- #: classes/display-conditions.php:118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
419
  msgid "Display ads based on age of the page."
420
  msgstr ""
421
 
@@ -541,288 +721,202 @@ msgstr ""
541
  msgid "days"
542
  msgstr ""
543
 
544
- #: classes/EDD_SL_Plugin_Updater.php:228
545
- #, php-format
546
- msgid ""
547
- "There is a new version of %1$s available. %2$sView version %3$s details%4$s."
548
  msgstr ""
549
 
550
- #: classes/EDD_SL_Plugin_Updater.php:236
551
- #, php-format
552
- msgid ""
553
- "There is a new version of %1$s available. %2$sView version %3$s details%4$s "
554
- "or %5$supdate now%6$s."
555
  msgstr ""
556
 
557
- #: classes/EDD_SL_Plugin_Updater.php:479
558
- msgid "You do not have permission to install plugin updates"
559
  msgstr ""
560
 
561
- #: classes/EDD_SL_Plugin_Updater.php:479
562
- msgid "Error"
563
  msgstr ""
564
 
565
- #: classes/filesystem.php:61
566
- msgid "Could not access filesystem."
567
  msgstr ""
568
 
569
- #: classes/filesystem.php:65
570
- msgid "Filesystem error."
571
  msgstr ""
572
 
573
- #: classes/filesystem.php:72
574
- msgid "Unable to locate WordPress root directory."
575
  msgstr ""
576
 
577
- #: classes/filesystem.php:76
578
- msgid "Unable to locate WordPress content directory (wp-content)."
579
  msgstr ""
580
 
581
- #: classes/filesystem.php:80
582
- #, php-format
583
- msgid "Unable to locate needed folder (%s)."
584
  msgstr ""
585
 
586
- #: classes/frontend_checks.php:95
587
- msgid "Random AdSense ads"
 
588
  msgstr ""
589
 
590
- #: classes/frontend_checks.php:109 admin/includes/class-settings.php:514
591
- msgid "You look like a bot"
592
  msgstr ""
593
 
594
- #: classes/frontend_checks.php:123
595
- msgid "Ad blocker enabled"
596
  msgstr ""
597
 
598
- #: classes/frontend_checks.php:136
599
- #, php-format
600
- msgid "<em>%s</em> filter does not exist"
601
  msgstr ""
602
 
603
- #: classes/frontend_checks.php:171
604
- msgid "Ads are disabled on this page"
605
  msgstr ""
606
 
607
- #: classes/frontend_checks.php:184
608
- msgid "Ads are disabled in the content of this page"
609
  msgstr ""
610
 
611
- #: classes/frontend_checks.php:196
612
- msgid "the current post ID is 0 "
 
613
  msgstr ""
614
 
615
- #: classes/frontend_checks.php:210
616
- msgid "Ads are disabled on all pages"
 
 
 
617
  msgstr ""
618
 
619
- #: classes/frontend_checks.php:223
620
- msgid "Ads are disabled on 404 pages"
 
 
621
  msgstr ""
622
 
623
- #: classes/frontend_checks.php:236
624
- msgid "Ads are disabled on non singular pages"
 
 
 
 
 
 
625
  msgstr ""
626
 
627
- #: classes/frontend_checks.php:250
628
- #, php-format
629
- msgid "Ad IDs: %s"
630
  msgstr ""
631
 
632
- #: classes/frontend_checks.php:262 admin/includes/ad-health-notices.php:141
633
- #, php-format
634
- msgid "Visible ads should not use the Header placement: %s"
635
  msgstr ""
636
 
637
- #: classes/frontend_checks.php:276 admin/includes/ad-health-notices.php:155
638
- msgid "AdSense violation"
639
  msgstr ""
640
 
641
- #: classes/frontend_checks.php:277 admin/includes/ad-health-notices.php:156
642
- msgid "Ad is hidden"
643
  msgstr ""
644
 
645
- #: classes/frontend_checks.php:278
646
- #, php-format
647
- msgid "IDs: %s"
 
648
  msgstr ""
649
 
650
- #: classes/frontend_checks.php:291
651
- #, php-format
652
- msgid "The following responsive AdSense ads are not showing up: %s"
653
  msgstr ""
654
 
655
- #: classes/frontend_checks.php:305
656
- msgid "Consent not given"
657
  msgstr ""
658
 
659
- #: classes/frontend_checks.php:317
660
- msgid "debug DFP ads"
661
  msgstr ""
662
 
663
- #: classes/frontend_checks.php:328
664
- msgid "highlight ads"
665
  msgstr ""
666
 
667
- #: classes/frontend_checks.php:335
668
- msgid "Auto ads code found"
669
  msgstr ""
670
 
671
- #: classes/frontend_checks.php:404
672
- msgid "Ad Health"
673
  msgstr ""
674
 
675
- #: classes/frontend_checks.php:418
676
- #, php-format
677
- msgid "Show %d more notifications"
678
  msgstr ""
679
 
680
- #: classes/frontend_checks.php:435
681
- msgid "Everything is fine"
 
 
682
  msgstr ""
683
 
684
- #: classes/frontend_checks.php:446 admin/includes/class-ad-type.php:778
685
- msgid "Get help"
686
  msgstr ""
687
 
688
- #: classes/frontend_checks.php:503
689
  msgid ""
690
- "the following code is used for automatic error detection and only visible to "
691
- "admins"
692
- msgstr ""
693
-
694
- #: classes/visitor-conditions.php:40
695
- msgid "device"
696
  msgstr ""
697
 
698
- #: classes/visitor-conditions.php:41
699
- msgid "Display ads only on mobile devices or hide them."
 
700
  msgstr ""
701
 
702
- #: classes/visitor-conditions.php:47
703
- msgid "logged-in visitor"
704
  msgstr ""
705
 
706
- #: classes/visitor-conditions.php:48
707
- msgid "Whether the visitor has to be logged in or not in order to see the ads."
708
  msgstr ""
709
 
710
- #: classes/visitor-conditions.php:116
 
711
  #, php-format
712
- msgid ""
713
- "Display ads by the available space on the device or target tablets with the "
714
- "<a href=\"%s\" target=\"_blank\">Responsive add-on</a>"
715
- msgstr ""
716
-
717
- #: classes/visitor-conditions.php:257
718
- msgid "browser language"
719
- msgstr ""
720
-
721
- #: classes/visitor-conditions.php:258
722
- msgid "cookie"
723
- msgstr ""
724
-
725
- #: classes/visitor-conditions.php:259
726
- msgid "max. ad clicks"
727
- msgstr ""
728
-
729
- #: classes/visitor-conditions.php:260
730
- msgid "max. ad impressions"
731
- msgstr ""
732
-
733
- #: classes/visitor-conditions.php:261
734
- msgid "new visitor"
735
- msgstr ""
736
-
737
- #: classes/visitor-conditions.php:262
738
- msgid "page impressions"
739
- msgstr ""
740
-
741
- #: classes/visitor-conditions.php:263
742
- msgid "referrer url"
743
- msgstr ""
744
-
745
- #: classes/visitor-conditions.php:264
746
- msgid "user agent"
747
- msgstr ""
748
-
749
- #: classes/visitor-conditions.php:265
750
- msgid "user can (capabilities)"
751
- msgstr ""
752
-
753
- #: classes/visitor-conditions.php:266
754
- msgid "user role"
755
- msgstr ""
756
-
757
- #: classes/visitor-conditions.php:269
758
- msgid "geo location"
759
- msgstr ""
760
-
761
- #: classes/visitor-conditions.php:272
762
- msgid "browser width"
763
- msgstr ""
764
-
765
- #: classes/widget.php:22
766
- msgid "Display Ads and Ad Groups."
767
- msgstr ""
768
-
769
- #: classes/widget.php:70
770
- msgid "Title:"
771
- msgstr ""
772
-
773
- #: classes/widget.php:76 admin/includes/class-shortcode-creator.php:82
774
- #: modules/gutenberg/includes/class-gutenberg.php:77
775
- msgid "--empty--"
776
- msgstr ""
777
-
778
- #: classes/widget.php:78 admin/includes/class-menu.php:95
779
- #: admin/includes/class-shortcode-creator.php:98 admin/views/placements.php:36
780
- #: modules/gutenberg/includes/class-gutenberg.php:81
781
- #: modules/import-export/views/page.php:25
782
- msgid "Placements"
783
- msgstr ""
784
-
785
- #: classes/widget.php:85 admin/includes/class-shortcode-creator.php:91
786
- #: admin/views/placement-form.php:45 admin/views/placements-item.php:4
787
- #: modules/gutenberg/includes/class-gutenberg.php:80
788
- msgid "Ad Groups"
789
  msgstr ""
790
 
791
- #: classes/widget.php:92 public/class-advanced-ads.php:738
792
- #: admin/includes/class-menu.php:68 admin/includes/class-menu.php:68
793
- #: admin/includes/class-shortcode-creator.php:84
794
- #: admin/views/ad-group-list-form-row.php:90
795
- #: admin/views/ad-group-list-header.php:17 admin/views/placement-form.php:52
796
- #: admin/views/placements-item.php:16
797
- #: modules/gutenberg/includes/class-gutenberg.php:79
798
- #: modules/import-export/views/page.php:23
799
- msgid "Ads"
800
  msgstr ""
801
 
802
- #: includes/array_ad_conditions.php:39
803
- msgid "Post Types"
 
804
  msgstr ""
805
 
806
- #: includes/array_ad_conditions.php:45
807
- msgid "Categories, Tags and Taxonomies"
 
808
  msgstr ""
809
 
810
- #: includes/array_ad_conditions.php:46
 
 
811
  msgid ""
812
- "Choose terms from public category, tag and other taxonomies a post must "
813
- "belong to in order to have ads."
814
- msgstr ""
815
-
816
- #: includes/array_ad_conditions.php:51
817
- msgid "Category Archives"
818
- msgstr ""
819
-
820
- #: includes/array_ad_conditions.php:52
821
- msgid "comma seperated IDs of category archives"
822
- msgstr ""
823
-
824
- #: includes/array_ad_conditions.php:57
825
- msgid "Individual Posts, Pages and Public Post Types"
826
  msgstr ""
827
 
828
  #: public/class-advanced-ads.php:377
@@ -937,41 +1031,32 @@ msgid ""
937
  "recommended. Please ask your hosting provider for more information."
938
  msgstr ""
939
 
940
- #: admin/includes/ad-health-notices.php:53
941
- #, php-format
942
- msgid ""
943
- "<strong>Autoptimize plugin detected</strong>. While this plugin is great for "
944
- "site performance, it is known to alter code, including scripts from ad "
945
- "networks. <a href=\"%s\" target=\"_blank\">Advanced Ads Pro</a> has a build-"
946
- "in support for Autoptimize."
947
- msgstr ""
948
-
949
- #: admin/includes/ad-health-notices.php:63
950
  #, php-format
951
  msgid ""
952
  "Plugins that are known to cause (partial) problems: <strong>%1$s</strong>. "
953
  "<a href=\"%2$s\" target=\"_blank\">Learn more</a>."
954
  msgstr ""
955
 
956
- #: admin/includes/ad-health-notices.php:74 admin/views/placements.php:140
957
  #, php-format
958
  msgid ""
959
  "Missing PHP extensions could cause issues. Please ask your hosting provider "
960
  "to enable them: %s"
961
  msgstr ""
962
 
963
- #: admin/includes/ad-health-notices.php:84
964
  #, php-format
965
  msgid ""
966
  "Ads are disabled for all or some pages. See \"disabled ads\" in <a "
967
  "href=\"%s\">settings</a>."
968
  msgstr ""
969
 
970
- #: admin/includes/ad-health-notices.php:92 admin/views/support.php:25
971
  msgid "Advanced Ads related constants enabled"
972
  msgstr ""
973
 
974
- #: admin/includes/ad-health-notices.php:100
975
  #, php-format
976
  msgid ""
977
  "Possible conflict between jQueryUI library, used by Advanced Ads and other "
@@ -979,7 +1064,7 @@ msgid ""
979
  "to misfortunate formats in forms, but should not damage features."
980
  msgstr ""
981
 
982
- #: admin/includes/ad-health-notices.php:110
983
  #, php-format
984
  msgid ""
985
  "Some assets were changed. Please <strong>rebuild the asset folder</strong> "
@@ -987,262 +1072,330 @@ msgid ""
987
  "disguise."
988
  msgstr ""
989
 
990
- #: admin/includes/ad-health-notices.php:119 admin/includes/notices.php:36
991
  msgid ""
992
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
993
  "missing</strong>."
994
  msgstr ""
995
 
996
- #: admin/includes/ad-health-notices.php:122 admin/includes/notices.php:36
997
  #, php-format
998
  msgid "Please add valid license keys <a href=\"%s\">here</a>."
999
  msgstr ""
1000
 
1001
- #: admin/includes/ad-health-notices.php:131
1002
  msgid "Ad expired"
1003
  msgstr ""
1004
 
1005
- #: admin/includes/ad-health-notices.php:178
1006
- #: admin/includes/ad-health-notices.php:185
1007
- #: modules/gadsense/includes/class-mapi.php:90
1008
  msgid "Last AdSense account connection attempt failed."
1009
  msgstr ""
1010
 
1011
  #. %1$s is the opening a tag and %2$s the closing one.
1012
- #: admin/includes/ad-health-notices.php:187
1013
  #, php-format
1014
  msgid "Create a new AdSense account %1$shere%2$s."
1015
  msgstr ""
1016
 
1017
- #: admin/includes/ad-health-notices.php:197
1018
- #: admin/includes/ad-health-notices.php:207
1019
- #: admin/includes/ad-health-notices.php:217
1020
  msgid ""
1021
  "One of your sites is missing the AdSense publisher ID in the ads.txt file."
1022
  msgstr ""
1023
 
1024
- #: admin/includes/ad-health-notices.php:199
1025
- #: admin/includes/ad-health-notices.php:209
1026
- #: admin/includes/ad-health-notices.php:219
1027
  msgctxt "related to ads.txt file"
1028
  msgid "Create one now."
1029
  msgstr ""
1030
 
1031
  #. %s is a filter hook, here `the_content`
1032
- #: admin/includes/ad-health-notices.php:227
1033
  #, php-format
1034
  msgid "<strong>%s</strong> filter found multiple times."
1035
  msgstr ""
1036
 
1037
- #: admin/includes/ad-health-notices.php:229
1038
  msgid "Advanced Ads uses the outermost of them."
1039
  msgstr ""
1040
 
1041
  #. %1$s is a plugin name, %2$s is the opening a tag and %3$s the closing one.
1042
- #: admin/includes/ad-health-notices.php:238
1043
- #: admin/includes/ad-health-notices.php:249
1044
- #: admin/includes/ad-health-notices.php:260
1045
- #: admin/includes/ad-health-notices.php:273
1046
  #, php-format
1047
  msgid "Learn how to integrate %1$s with Advanced Ads %2$shere%3$s."
1048
  msgstr ""
1049
 
1050
  #. %s is a service or plugin name.
1051
- #: admin/includes/ad-health-notices.php:287
1052
  #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:196
1053
  #, php-format
1054
  msgid "%s detected."
1055
  msgstr ""
1056
 
1057
- #: admin/includes/ad-health-notices.php:288
1058
  msgid "Learn how this might impact your ad setup."
1059
  msgstr ""
1060
 
1061
- #: admin/includes/ad-health-notices.php:299
1062
  #, php-format
1063
  msgid ""
1064
  "Advanced Ads handles your ads.txt file automatically. You might be able to "
1065
  "<strong>remove %1$s</strong>."
1066
  msgstr ""
1067
 
1068
- #: admin/includes/ad-health-notices.php:310
1069
  msgid "Advanced Ads handles header and footer codes."
1070
  msgstr ""
1071
 
1072
- #: admin/includes/ad-health-notices.php:311
1073
  #, php-format
1074
  msgid "You might be able to <strong>remove %1$s</strong>."
1075
  msgstr ""
1076
 
1077
- #: admin/includes/ad-health-notices.php:314
1078
  msgid "Learn how."
1079
  msgstr ""
1080
 
1081
- #: admin/includes/class-ad-groups-list.php:172
1082
- msgid "Ad weight"
1083
  msgstr ""
1084
 
1085
- #: admin/includes/class-ad-groups-list.php:184
1086
- #: admin/views/ad-list-timing-column.php:4
1087
- #, php-format
1088
- msgid "starts %s"
1089
  msgstr ""
1090
 
1091
- #: admin/includes/class-ad-groups-list.php:205
1092
- #: admin/views/ad-list-timing-column.php:28
1093
- #, php-format
1094
- msgid "expires %s"
1095
  msgstr ""
1096
 
1097
- #: admin/includes/class-ad-groups-list.php:208
1098
- #: admin/views/ad-list-timing-column.php:30
1099
  #, php-format
1100
- msgid "<strong>expired</strong> %s"
1101
- msgstr ""
 
 
1102
 
1103
- #: admin/includes/class-ad-groups-list.php:225
1104
  #, php-format
1105
- msgid "show %d more ads"
1106
- msgstr ""
 
 
1107
 
1108
- #: admin/includes/class-ad-groups-list.php:229
1109
- msgid "all published ads are displayed"
1110
- msgstr ""
 
 
 
1111
 
1112
- #: admin/includes/class-ad-groups-list.php:232
1113
  #, php-format
1114
- msgid "up to %d ads displayed"
1115
- msgstr ""
 
 
1116
 
1117
- #: admin/includes/class-ad-groups-list.php:235
1118
- msgid "No ads assigned"
 
 
 
 
 
 
 
1119
  msgstr ""
1120
 
1121
- #: admin/includes/class-ad-groups-list.php:237
1122
- msgid "Add some"
 
 
1123
  msgstr ""
1124
 
1125
- #: admin/includes/class-ad-groups-list.php:315
1126
- msgid "Random ads"
1127
  msgstr ""
1128
 
1129
- #: admin/includes/class-ad-groups-list.php:316
1130
- msgid "Display random ads based on ad weight"
1131
  msgstr ""
1132
 
1133
- #: admin/includes/class-ad-groups-list.php:319
1134
- msgid "Ordered ads"
 
1135
  msgstr ""
1136
 
1137
- #: admin/includes/class-ad-groups-list.php:320
1138
- msgid "Display ads with the highest ad weight first"
 
1139
  msgstr ""
1140
 
1141
- #: admin/includes/class-ad-groups-list.php:340
1142
- msgid "Usage"
1143
  msgstr ""
1144
 
1145
- #: admin/includes/class-ad-groups-list.php:349
1146
- msgid "Delete"
 
 
1147
  msgstr ""
1148
 
1149
- #: admin/includes/class-ad-groups-list.php:371
1150
- #: admin/includes/class-ad-groups-list.php:439
1151
- msgid "Invalid Ad Group"
 
1152
  msgstr ""
1153
 
1154
- #: admin/includes/class-ad-groups-list.php:376
1155
- #: admin/includes/class-ad-groups-list.php:444
1156
- msgid "You don’t have permission to change the ad groups"
1157
  msgstr ""
1158
 
1159
- #: admin/includes/class-ad-groups-list.php:408
1160
- msgid "No ad group created"
 
 
1161
  msgstr ""
1162
 
1163
- #: admin/includes/class-ad-type.php:193 admin/includes/class-ad-type.php:199
1164
- msgid "Ad Details"
1165
  msgstr ""
1166
 
1167
- #: admin/includes/class-ad-type.php:194 admin/includes/class-ad-type.php:200
1168
- msgid "Ad Planning"
 
 
1169
  msgstr ""
1170
 
1171
- #: admin/includes/class-ad-type.php:195 admin/includes/class-ad-type.php:201
1172
- msgid "Ad Shortcode"
 
1173
  msgstr ""
1174
 
1175
- #: admin/includes/class-ad-type.php:357
1176
- #, php-format
1177
- msgid "%s ad updated."
1178
- msgid_plural "%s ads updated."
1179
- msgstr[0] ""
1180
- msgstr[1] ""
1181
 
1182
- #: admin/includes/class-ad-type.php:359
1183
- #, php-format
1184
- msgid "%s ad not updated, somebody is editing it."
1185
- msgid_plural "%s ads not updated, somebody is editing them."
1186
- msgstr[0] ""
1187
- msgstr[1] ""
1188
 
1189
- #: admin/includes/class-ad-type.php:361
1190
- #, php-format
1191
- msgid "%s ad permanently deleted."
1192
- msgid_plural "%s ads permanently deleted."
1193
- msgstr[0] ""
1194
- msgstr[1] ""
1195
 
1196
- #: admin/includes/class-ad-type.php:363
1197
- #, php-format
1198
- msgid "%s ad moved to the Trash."
1199
- msgid_plural "%s ads moved to the Trash."
1200
- msgstr[0] ""
1201
- msgstr[1] ""
 
1202
 
1203
- #: admin/includes/class-ad-type.php:365
 
1204
  #, php-format
1205
- msgid "%s ad restored from the Trash."
1206
- msgid_plural "%s ads restored from the Trash."
1207
- msgstr[0] ""
1208
- msgstr[1] ""
 
 
1209
 
1210
- #: admin/includes/class-ad-type.php:712 admin/includes/class-ad-type.php:713
1211
- msgid "Ad updated."
 
 
1212
  msgstr ""
1213
 
1214
- #. translators: %s: date and time of the revision
1215
- #: admin/includes/class-ad-type.php:714
1216
- #, php-format
1217
- msgid "Ad restored to revision from %s"
1218
  msgstr ""
1219
 
1220
- #: admin/includes/class-ad-type.php:715 admin/includes/class-ad-type.php:716
1221
- msgid "Ad saved."
1222
  msgstr ""
1223
 
1224
- #: admin/includes/class-ad-type.php:717
1225
- msgid "Ad submitted."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1226
  msgstr ""
1227
 
1228
- #: admin/includes/class-ad-type.php:718
1229
  #, php-format
1230
- msgid "Ad scheduled for: <strong>%1$s</strong>."
1231
  msgstr ""
1232
 
1233
- #. translators: Publish box date format, see http://php.net/date
1234
- #: admin/includes/class-ad-type.php:720
1235
- msgid "M j, Y @ G:i"
1236
  msgstr ""
1237
 
1238
- #: admin/includes/class-ad-type.php:721
1239
- msgid "Ad draft updated."
1240
  msgstr ""
1241
 
1242
- #: admin/includes/class-ad-type.php:777
1243
- msgid ""
1244
- "You don’t have access to ads. Please deactivate and re-enable Advanced Ads "
1245
- "again to fix this."
 
 
 
1246
  msgstr ""
1247
 
1248
  #: admin/includes/class-licenses.php:90
@@ -1289,45 +1442,66 @@ msgid "License is invalid. Reason: %s"
1289
  msgstr ""
1290
 
1291
  #. %s is a list of server information like IP address. Just keep it as is.
1292
- #: admin/includes/class-licenses.php:244
1293
  #, php-format
1294
  msgid ""
1295
  "Your request was blocked by our firewall. Please send us the following "
1296
  "information to unblock you: %s."
1297
  msgstr ""
1298
 
1299
- #: admin/includes/class-licenses.php:302
1300
  msgid "Error while trying to disable the license. Please contact support."
1301
  msgstr ""
1302
 
1303
- #: admin/includes/class-licenses.php:337 admin/includes/class-licenses.php:360
1304
  msgid "License couldn’t be deactivated. Please try again later."
1305
  msgstr ""
1306
 
1307
- #: admin/includes/class-licenses.php:590
1308
  #, php-format
1309
  msgid "Download failed. <a href=\"%s\">Click here to try another method</a>."
1310
  msgstr ""
1311
 
1312
- #: admin/includes/class-licenses.php:592
1313
  #, php-format
1314
  msgid ""
1315
  "Download failed. <a href=\"%s\" target=\"_blank\">Click here to learn why</a>"
1316
  "."
1317
  msgstr ""
1318
 
1319
- #: admin/includes/class-list-filters.php:141
1320
- #: modules/gadsense/admin/admin.php:25
1321
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:114
1322
- msgid "Responsive"
1323
  msgstr ""
1324
 
1325
- #: admin/includes/class-list-filters.php:150
1326
- msgid "expired"
 
1327
  msgstr ""
1328
 
1329
- #: admin/includes/class-list-filters.php:154
1330
- msgid "any expiry date"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1331
  msgstr ""
1332
 
1333
  #: admin/includes/class-menu.php:58 admin/includes/class-menu.php:74
@@ -1370,96 +1544,285 @@ msgid ""
1370
  "deleted?"
1371
  msgstr ""
1372
 
1373
- #: admin/includes/class-meta-box.php:55
1374
- msgid "Ad Type"
1375
  msgstr ""
1376
 
1377
- #: admin/includes/class-meta-box.php:64
1378
- #: admin/includes/class-overview-widgets.php:53
1379
- msgid "AdSense Earnings"
1380
  msgstr ""
1381
 
1382
- #: admin/includes/class-meta-box.php:73
1383
- msgid "Ad Parameters"
1384
  msgstr ""
1385
 
1386
- #: admin/includes/class-meta-box.php:76 admin/includes/class-settings.php:66
1387
- msgid "Layout / Output"
1388
  msgstr ""
1389
 
1390
- #: admin/includes/class-meta-box.php:86
1391
- msgid "Increase your ad revenue"
1392
  msgstr ""
1393
 
1394
- #: admin/includes/class-meta-box.php:91
1395
- msgid "Ad Stats"
1396
  msgstr ""
1397
 
1398
- #: admin/includes/class-meta-box.php:153 admin/includes/class-meta-box.php:164
1399
- #: admin/includes/class-meta-box.php:169 admin/includes/class-settings.php:607
1400
- #: admin/views/ad-output-metabox.php:82
1401
- #: modules/ads-txt/admin/views/setting-create.php:11
1402
- #: modules/privacy/admin/views/setting-enable.php:2
1403
- msgid "Manual"
1404
  msgstr ""
1405
 
1406
- #: admin/includes/class-meta-box.php:163
1407
- msgid "Video"
1408
  msgstr ""
1409
 
1410
- #: admin/includes/class-meta-box.php:198
1411
- #: admin/includes/class-overview-widgets.php:51
1412
- msgid "Disable"
1413
  msgstr ""
1414
 
1415
- #: admin/includes/class-meta-box.php:311
1416
- msgid "Ad Settings"
1417
  msgstr ""
1418
 
1419
- #: admin/includes/class-meta-box.php:413 admin/views/overview.php:6
1420
- msgid "Ads Dashboard"
1421
  msgstr ""
1422
 
1423
- #: admin/includes/class-meta-box.php:424
1424
- #, php-format
1425
- msgid "%d ads – <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
1426
  msgstr ""
1427
 
1428
- #: admin/includes/class-meta-box.php:435
1429
- msgid "Get the tutorial via email"
1430
  msgstr ""
1431
 
1432
- #: admin/includes/class-meta-box.php:442
1433
- msgid "Get AdSense tips via email"
1434
  msgstr ""
1435
 
1436
- #: admin/includes/class-meta-box.php:449
1437
- msgid "Visit our blog for more articles about ad optimization"
1438
  msgstr ""
1439
 
1440
- #. %s is our URL
1441
- #: admin/includes/class-meta-box.php:502
1442
- msgid "Latest posts on wpadvancedads.com"
1443
  msgstr ""
1444
 
1445
- #: admin/includes/class-notices.php:466
 
 
 
 
 
 
 
 
1446
  #, php-format
1447
  msgid ""
1448
- "You don’t seem to have an email address. Please use <a href=\"%s\" "
1449
- "target=\"_blank\">this form</a> to sign up."
1450
  msgstr ""
1451
 
1452
- #: admin/includes/class-notices.php:485
 
1453
  msgid ""
1454
- "How embarrassing. The email server seems to be down. Please try again later."
 
1455
  msgstr ""
1456
 
1457
- #: admin/includes/class-notices.php:492
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1458
  #, php-format
1459
  msgid ""
1460
- "Please check your email (%s) for the confirmation message. If you didn’t "
1461
- "receive one or want to use another email address then please use <a "
1462
- "href=\"%s\" target=\"_blank\">this form</a> to sign up."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1463
  msgstr ""
1464
 
1465
  #: admin/includes/class-overview-widgets.php:45
@@ -1681,489 +2044,141 @@ msgstr ""
1681
  msgid "Get this add-on"
1682
  msgstr ""
1683
 
1684
- #: admin/includes/class-settings.php:50
1685
- msgid "Admin"
1686
  msgstr ""
1687
 
1688
- #: admin/includes/class-settings.php:58 admin/includes/class-settings.php:128
1689
- msgid "Disable ads"
1690
  msgstr ""
1691
 
1692
- #: admin/includes/class-settings.php:74
1693
- msgid "Content injection"
1694
  msgstr ""
1695
 
1696
- #: admin/includes/class-settings.php:136
1697
- msgid "Hide ads for user roles"
1698
  msgstr ""
1699
 
1700
- #: admin/includes/class-settings.php:144
1701
- msgid "Unlimited ad injection"
1702
  msgstr ""
1703
 
1704
- #: admin/includes/class-settings.php:152
1705
- msgid "Priority of content injection filter"
1706
  msgstr ""
1707
 
1708
- #: admin/includes/class-settings.php:168
1709
- msgid "Hide ads from bots"
1710
  msgstr ""
1711
 
1712
- #: admin/includes/class-settings.php:177
1713
- msgid "Disable ads for post types"
1714
  msgstr ""
1715
 
1716
- #: admin/includes/class-settings.php:186
1717
- msgid "Disable Ad Health and other notices"
1718
- msgstr ""
1719
-
1720
- #: admin/includes/class-settings.php:194
1721
- msgid "ID prefix"
1722
- msgstr ""
1723
-
1724
- #: admin/includes/class-settings.php:202
1725
- msgid "Allow editors to manage ads"
1726
- msgstr ""
1727
-
1728
- #: admin/includes/class-settings.php:210
1729
- msgid "Ad label"
1730
- msgstr ""
1731
-
1732
- #: admin/includes/class-settings.php:219
1733
- msgid "Open links in a new window"
1734
- msgstr ""
1735
-
1736
- #: admin/includes/class-settings.php:227
1737
- msgid "Use advanced JavaScript"
1738
- msgstr ""
1739
-
1740
- #: admin/includes/class-settings.php:237
1741
- msgid "Delete data on uninstall"
1742
- msgstr ""
1743
-
1744
- #: admin/includes/class-settings.php:247
1745
- msgid "Disable shortcode button"
1746
- msgstr ""
1747
-
1748
- #: admin/includes/class-settings.php:286
1749
- msgid "Pro"
1750
- msgstr ""
1751
-
1752
- #: admin/includes/class-settings.php:302 admin/views/pitch-tracking.php:2
1753
- msgid "Tracking"
1754
- msgstr ""
1755
-
1756
- #: admin/includes/class-settings.php:350
1757
- #, php-format
1758
- msgid ""
1759
- "Enter license keys for our powerful <a href=\"%s\" target=\"_blank\">add-"
1760
- "ons</a>."
1761
- msgstr ""
1762
-
1763
- #: admin/includes/class-settings.php:351
1764
- #, php-format
1765
- msgid ""
1766
- "See also <a href=\"%s\" target=\"_blank\">Issues and questions about "
1767
- "licenses</a>."
1768
- msgstr ""
1769
-
1770
- #: admin/includes/class-settings.php:363
1771
- msgid "Are you missing something?"
1772
- msgstr ""
1773
-
1774
- #: admin/includes/class-settings.php:431
1775
- msgid "Choose the roles a user must have in order to not see any ads."
1776
- msgstr ""
1777
-
1778
- #: admin/includes/class-settings.php:445
1779
- msgid ""
1780
- "<strong>notice: </strong>the file is currently enabled by an add-on that "
1781
- "needs it."
1782
- msgstr ""
1783
-
1784
- #: admin/includes/class-settings.php:448
1785
- #, php-format
1786
- msgid ""
1787
- "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">"
1788
- "here</a>). Some features and add-ons might override this setting if they "
1789
- "need features from this file."
1790
- msgstr ""
1791
-
1792
- #: admin/includes/class-settings.php:468
1793
- msgid ""
1794
- "Some plugins and themes trigger ad injections where it shouldn’t happen. "
1795
- "Therefore, Advanced Ads ignores injected placements on non-singular pages "
1796
- "and outside the loop. However, this can cause problems with some themes. Set "
1797
- "this option to -1 in order to enable unlimited ad injection at your own risk,"
1798
- " set it to 0 to keep it disabled or choose a positive number to enable the "
1799
- "injection only in the first x posts on your archive pages."
1800
- msgstr ""
1801
-
1802
- #: admin/includes/class-settings.php:484
1803
- msgid ""
1804
- "Please check your post content. A priority of 10 and below might cause "
1805
- "issues (wpautop function might run twice)."
1806
- msgstr ""
1807
-
1808
- #: admin/includes/class-settings.php:486
1809
- msgid ""
1810
- "Play with this value in order to change the priority of the injected ads "
1811
- "compared to other auto injected elements in the post content."
1812
- msgstr ""
1813
-
1814
- #: admin/includes/class-settings.php:500
1815
- msgid ""
1816
- "Advanced Ads ignores paragraphs and other elements in containers when "
1817
- "injecting ads into the post content. Check this option to ignore this "
1818
- "limitation and ads might show up again."
1819
- msgstr ""
1820
-
1821
- #: admin/includes/class-settings.php:516
1822
- msgid "Read this first"
1823
- msgstr ""
1824
-
1825
- #: admin/includes/class-settings.php:517
1826
- msgid "Hide ads from crawlers, bots and empty user agents."
1827
- msgstr ""
1828
-
1829
- #: admin/includes/class-settings.php:530
1830
- msgid "Pro feature"
1831
- msgstr ""
1832
-
1833
- #. %1$s is a starting <a> tag and %2$s a closing one
1834
- #: admin/includes/class-settings.php:548
1835
- #, php-format
1836
- msgid ""
1837
- "Disable %1$sAd Health%2$s in frontend and backend, warnings and internal "
1838
- "notices like tips, tutorials, email newsletters and update notices."
1839
- msgstr ""
1840
-
1841
- #: admin/includes/class-settings.php:566
1842
- msgid ""
1843
- "Prefix of class or id attributes in the frontend. Change it if you don’t "
1844
- "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
1845
- "need to <strong>rewrite css rules afterwards</strong>."
1846
- msgstr ""
1847
-
1848
- #: admin/includes/class-settings.php:585
1849
- msgid "Allow editors to also manage and publish ads."
1850
- msgstr ""
1851
-
1852
- #: admin/includes/class-settings.php:586
1853
- #, php-format
1854
- msgid ""
1855
- "You can assign different ad-related roles on a user basis with <a "
1856
- "href=\"%s\" target=\"_blank\">Advanced Ads Pro</a>."
1857
- msgstr ""
1858
-
1859
- #: admin/includes/class-settings.php:597
1860
- msgctxt "label before ads"
1861
- msgid "Advertisements"
1862
- msgstr ""
1863
-
1864
- #: admin/includes/class-settings.php:606
1865
- msgid "Displayed above ads."
1866
- msgstr ""
1867
-
1868
- #: admin/includes/class-settings.php:642
1869
- msgid "Clean up all data related to Advanced Ads when removing the plugin."
1870
- msgstr ""
1871
-
1872
- #: admin/includes/class-settings.php:655
1873
- msgid "Disable shortcode button in visual editor."
1874
- msgstr ""
1875
-
1876
- #: admin/includes/class-shortcode-creator.php:155
1877
- #, php-format
1878
- msgid ""
1879
- "Please, either switch off your ad blocker or disable the shortcode button in "
1880
- "the <a href=\"%s\" target=\"_blank\">settings</a>."
1881
- msgstr ""
1882
-
1883
- #: admin/includes/notices.php:15
1884
- msgid ""
1885
- "Thank you for activating <strong>Advanced Ads</strong>. Would you like to "
1886
- "receive the first steps via email?"
1887
- msgstr ""
1888
-
1889
- #: admin/includes/notices.php:16
1890
- msgid "Yes, send it"
1891
- msgstr ""
1892
-
1893
- #: admin/includes/notices.php:22
1894
- msgid ""
1895
- "Thank you for using <strong>Advanced Ads</strong>. Stay informed and receive "
1896
- "<strong>2 free add-ons</strong> for joining the newsletter."
1897
- msgstr ""
1898
-
1899
- #: admin/includes/notices.php:23
1900
- msgid "Add me now"
1901
- msgstr ""
1902
-
1903
- #: admin/includes/notices.php:29
1904
- msgid ""
1905
- "Learn more about how and <strong>how much you can earn with AdSense</strong> "
1906
- "and Advanced Ads from my dedicated newsletter."
1907
- msgstr ""
1908
-
1909
- #: admin/includes/notices.php:30 admin/views/notices/inline.php:3
1910
- #: admin/views/notices/subscribe.php:3
1911
- msgid "Subscribe me now"
1912
- msgstr ""
1913
-
1914
- #: admin/includes/notices.php:44
1915
- msgid "… ads created using <strong>Advanced Ads</strong>."
1916
- msgstr ""
1917
-
1918
- #: admin/includes/notices.php:45
1919
- msgid ""
1920
- "Do you find the plugin useful and would like to thank us for updates, fixing "
1921
- "bugs and improving your ad setup?"
1922
- msgstr ""
1923
-
1924
- #. this belongs to our message asking the user for a review. You can find a nice equivalent in your own language
1925
- #: admin/includes/notices.php:48
1926
- msgid "When you give 5-stars, an actual person does a little happy dance!"
1927
- msgstr ""
1928
-
1929
- #: admin/includes/notices.php:50
1930
- msgid "Sure, I appreciate your work"
1931
- msgstr ""
1932
-
1933
- #: admin/includes/notices.php:51
1934
- msgid "Yes, but help me first to solve a problem, please"
1935
- msgstr ""
1936
-
1937
- #. %s is a link. `30%%` is correct, please use exactly that value so that it shows "30%".
1938
- #: admin/includes/notices.php:60
1939
- #, php-format
1940
- msgid ""
1941
- "Our Black Friday / Cyber Monday Offer: <span style=\"font-weight: bold; font-"
1942
- "size: 1.4em; color: green;\">-30%%</span> on all add-ons and All Access.<a "
1943
- "class=\"button button-primary\" target=\"_blank\" href=\"%s\">Get All "
1944
- "Access</a>"
1945
- msgstr ""
1946
-
1947
- #: admin/includes/shortcode-creator-l10n.php:10
1948
- msgctxt "shortcode creator"
1949
- msgid "Add an ad"
1950
- msgstr ""
1951
-
1952
- #: admin/includes/shortcode-creator-l10n.php:11
1953
- msgctxt "shortcode creator"
1954
- msgid "Add shortcode"
1955
- msgstr ""
1956
-
1957
- #: admin/includes/shortcode-creator-l10n.php:12
1958
- msgctxt "shortcode creator"
1959
- msgid "Cancel"
1960
- msgstr ""
1961
-
1962
- #: admin/views/ad-conditions-string-operators.php:12
1963
- #: modules/privacy/admin/views/setting-consent-method.php:10
1964
- msgid "contains"
1965
- msgstr ""
1966
-
1967
- #: admin/views/ad-conditions-string-operators.php:13
1968
- msgid "starts with"
1969
- msgstr ""
1970
-
1971
- #: admin/views/ad-conditions-string-operators.php:14
1972
- msgid "ends with"
1973
- msgstr ""
1974
-
1975
- #: admin/views/ad-conditions-string-operators.php:15
1976
- msgid "matches"
1977
- msgstr ""
1978
-
1979
- #: admin/views/ad-conditions-string-operators.php:16
1980
- msgid "matches regex"
1981
- msgstr ""
1982
-
1983
- #: admin/views/ad-conditions-string-operators.php:17
1984
- msgid "does not contain"
1985
- msgstr ""
1986
-
1987
- #: admin/views/ad-conditions-string-operators.php:18
1988
- msgid "does not start with"
1989
- msgstr ""
1990
-
1991
- #: admin/views/ad-conditions-string-operators.php:19
1992
- msgid "does not end with"
1993
- msgstr ""
1994
-
1995
- #: admin/views/ad-conditions-string-operators.php:20
1996
- msgid "does not match"
1997
- msgstr ""
1998
-
1999
- #: admin/views/ad-conditions-string-operators.php:21
2000
- msgid "does not match regex"
2001
- msgstr ""
2002
-
2003
- #: admin/views/ad-group-edit.php:18
2004
- msgid "You did not select an item for editing."
2005
- msgstr ""
2006
-
2007
- #: admin/views/ad-group-edit.php:39
2008
- msgctxt "Taxonomy Name"
2009
- msgid "Name"
2010
- msgstr ""
2011
-
2012
- #: admin/views/ad-group-edit.php:49
2013
- msgctxt "Taxonomy Slug"
2014
- msgid "Slug"
2015
- msgstr ""
2016
-
2017
- #: admin/views/ad-group-edit.php:54 admin/views/ad-output-metabox.php:63
2018
- msgid ""
2019
- "An id-like string with only letters in lower case, numbers, and hyphens."
2020
- msgstr ""
2021
-
2022
- #: admin/views/ad-group-edit.php:61
2023
- msgctxt "Taxonomy Description"
2024
- msgid "Description"
2025
- msgstr ""
2026
-
2027
- #: admin/views/ad-group-edit.php:73
2028
- msgid "Create new Ad Group"
2029
- msgstr ""
2030
-
2031
- #: admin/views/ad-group-edit.php:75
2032
- msgid "Update"
2033
- msgstr ""
2034
-
2035
- #: admin/views/ad-group-list-ads.php:14
2036
- msgid "weight"
2037
- msgstr ""
2038
-
2039
- #: admin/views/ad-group-list-ads.php:37
2040
- #: admin/views/conditions/conditions-form.php:35
2041
- msgid "add"
2042
- msgstr ""
2043
-
2044
- #: admin/views/ad-group-list-form-row.php:29 admin/views/placements.php:42
2045
- #: modules/gadsense/admin/views/external-ads-list.php:30
2046
- #: modules/gadsense/admin/views/external-ads-list.php:43
2047
- #: modules/privacy/admin/views/setting-consent-method.php:9
2048
- msgid "Name"
2049
  msgstr ""
2050
 
2051
- #: admin/views/ad-group-list-form-row.php:55 admin/views/placements.php:41
2052
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:110
2053
- msgid "Type"
2054
  msgstr ""
2055
 
2056
- #: admin/views/ad-group-list-form-row.php:71
2057
- msgctxt "option to display all ads in an ad groups"
2058
- msgid "all"
 
2059
  msgstr ""
2060
 
2061
- #: admin/views/ad-group-list-form-row.php:78
2062
- msgid "Visible ads"
2063
  msgstr ""
2064
 
2065
- #: admin/views/ad-group-list-form-row.php:80
2066
- msgid "Number of ads that are visible at the same time"
2067
  msgstr ""
2068
 
2069
- #: admin/views/ad-group-list-header.php:16
2070
- msgid "Details"
2071
  msgstr ""
2072
 
2073
- #: admin/views/ad-group-list-row.php:19 admin/views/ad-info.php:3
2074
- #: admin/views/placements.php:102
2075
- msgid "shortcode"
2076
  msgstr ""
2077
 
2078
- #: admin/views/ad-group-list-row.php:22
2079
- msgid "template"
2080
  msgstr ""
2081
 
2082
- #: admin/views/ad-group-list-row.php:25
2083
- #, php-format
2084
  msgid ""
2085
- "Learn more about using groups in the <a href=\"%s\" target=\"_blank\">"
2086
- "manual</a>."
2087
  msgstr ""
2088
 
2089
- #: admin/views/ad-group-list-row.php:34
2090
- #, php-format
2091
- msgid "Type: %s"
2092
  msgstr ""
2093
 
2094
- #: admin/views/ad-group-list-row.php:39
2095
  #, php-format
2096
- msgid "ID: %s"
2097
- msgstr ""
2098
-
2099
- #: admin/views/ad-group.php:23
2100
- msgid "Ad Group successfully created"
2101
- msgstr ""
2102
-
2103
- #: admin/views/ad-group.php:34
2104
- msgid "Ad Groups successfully updated"
2105
  msgstr ""
2106
 
2107
- #: admin/views/ad-group.php:60
2108
  #, php-format
2109
- msgid "Search results for &#8220;%s&#8221;"
 
 
 
2110
  msgstr ""
2111
 
2112
- #: admin/views/ad-group.php:67
2113
- msgid "Group title"
2114
  msgstr ""
2115
 
2116
- #: admin/views/ad-group.php:68
2117
- msgid "save"
2118
  msgstr ""
2119
 
2120
- #: admin/views/ad-group.php:70
2121
- msgid ""
2122
- "Ad Groups are a very flexible method to bundle ads. You can use them to "
2123
- "display random ads in the frontend or run split tests, but also just for "
2124
- "informational purposes. Not only can an Ad Groups have multiple ads, but an "
2125
- "ad can belong to multiple ad groups."
2126
  msgstr ""
2127
 
2128
- #: admin/views/ad-group.php:76
2129
- #, php-format
2130
- msgid ""
2131
- "Find more information about ad groups in the <a href=\"%s\" "
2132
- "target=\"_blank\">manual</a>."
2133
  msgstr ""
2134
 
2135
- #: admin/views/ad-group.php:104
2136
- msgid "Update Groups"
2137
  msgstr ""
2138
 
2139
- #: admin/views/ad-info-after-textarea.php:18
2140
- msgid ""
2141
- "The code of this ad might not work properly with the <em>Content</em> "
2142
- "placement."
2143
  msgstr ""
2144
 
2145
- #: admin/views/ad-info-after-textarea.php:25
2146
- #, php-format
2147
- msgid "Reach out to <a href=\"%s\">support</a> to get help."
2148
  msgstr ""
2149
 
2150
- #: admin/views/ad-info-bottom.php:14
2151
- msgctxt "wizard navigation"
2152
- msgid "previous"
2153
  msgstr ""
2154
 
2155
- #: admin/views/ad-info-bottom.php:17 admin/views/ad-info-bottom.php:19
2156
- msgctxt "wizard navigation"
2157
- msgid "next"
2158
  msgstr ""
2159
 
2160
- #: admin/views/ad-info-bottom.php:17
2161
- msgctxt "wizard navigation"
2162
- msgid "save"
2163
  msgstr ""
2164
 
2165
- #: admin/views/ad-info-bottom.php:20 admin/views/ad-info-top.php:26
2166
- msgid "Stop Wizard and show all options"
2167
  msgstr ""
2168
 
2169
  #: admin/views/ad-info-top.php:2
@@ -2174,924 +2189,853 @@ msgstr ""
2174
  msgid "Stop Wizard"
2175
  msgstr ""
2176
 
2177
- #: admin/views/ad-info.php:2
2178
- #, php-format
2179
- msgid "Ad Id: %s"
2180
  msgstr ""
2181
 
2182
- #: admin/views/ad-info.php:5
2183
- msgid "theme function"
2184
  msgstr ""
2185
 
2186
- #: admin/views/ad-info.php:7
2187
- #, php-format
2188
  msgid ""
2189
- "Find more display options in the <a href=\"%s\" target=\"_blank\">manual</a>."
2190
- msgstr ""
2191
-
2192
- #: admin/views/ad-info.php:11
2193
- msgid "click to change"
2194
- msgstr ""
2195
-
2196
- #: admin/views/ad-info.php:18
2197
- msgid "Add a description"
2198
- msgstr ""
2199
-
2200
- #: admin/views/ad-info.php:22
2201
- msgid "Internal description or your own notes about this ad."
2202
- msgstr ""
2203
-
2204
- #: admin/views/ad-list-filters.php:18
2205
- msgid "all ad types"
2206
- msgstr ""
2207
-
2208
- #: admin/views/ad-list-filters.php:26
2209
- msgid "all ad sizes"
2210
- msgstr ""
2211
-
2212
- #: admin/views/ad-list-filters.php:34
2213
- msgid "all ad dates"
2214
- msgstr ""
2215
-
2216
- #: admin/views/ad-list-filters.php:42
2217
- msgid "all ad groups"
2218
- msgstr ""
2219
-
2220
- #: admin/views/ad-list-no-ads.php:4
2221
- msgid "Watch the “First Ad” Tutorial (Video)"
2222
- msgstr ""
2223
-
2224
- #: admin/views/ad-main-metabox.php:3
2225
- msgid "No ad types defined"
2226
- msgstr ""
2227
-
2228
- #: admin/views/ad-output-metabox.php:1
2229
- msgid "Everything connected to the ads layout and output."
2230
- msgstr ""
2231
-
2232
- #: admin/views/ad-output-metabox.php:4
2233
- #: admin/views/placements-ad-label-position.php:1
2234
- msgid "Position"
2235
- msgstr ""
2236
-
2237
- #: admin/views/ad-output-metabox.php:7
2238
- msgid "- default -"
2239
- msgstr ""
2240
-
2241
- #: admin/views/ad-output-metabox.php:11
2242
- #: admin/views/placements-ad-label-position.php:2
2243
- #: admin/views/placements-ad-label-position.php:5
2244
- #: admin/views/placements-ad-label.php:1 admin/views/placements-ad-label.php:4
2245
- #: admin/views/placements.php:84
2246
- #: modules/gadsense/includes/class-network-adsense.php:239
2247
- msgid "default"
2248
- msgstr ""
2249
-
2250
- #: admin/views/ad-output-metabox.php:12
2251
- #: admin/views/placements-ad-label-position.php:7
2252
- #: admin/views/placements-ad-label-position.php:10
2253
- msgid "left"
2254
  msgstr ""
2255
 
2256
- #: admin/views/ad-output-metabox.php:17
2257
- #: admin/views/placements-ad-label-position.php:11
2258
- #: admin/views/placements-ad-label-position.php:14
2259
- msgid "center"
2260
  msgstr ""
2261
 
2262
- #: admin/views/ad-output-metabox.php:22
2263
- #: admin/views/placements-ad-label-position.php:15
2264
- #: admin/views/placements-ad-label-position.php:18
2265
- msgid "right"
2266
  msgstr ""
2267
 
2268
- #: admin/views/ad-output-metabox.php:31
2269
  msgid ""
2270
- "Check this if you don't want the following elements to float around the ad. "
2271
- "(adds a clearfix)"
2272
- msgstr ""
2273
-
2274
- #: admin/views/ad-output-metabox.php:35
2275
- msgid "Margin"
2276
- msgstr ""
2277
-
2278
- #: admin/views/ad-output-metabox.php:37
2279
- msgid "top:"
2280
- msgstr ""
2281
-
2282
- #: admin/views/ad-output-metabox.php:41
2283
- msgid "right:"
2284
  msgstr ""
2285
 
2286
- #: admin/views/ad-output-metabox.php:45
2287
- msgid "bottom:"
2288
  msgstr ""
2289
 
2290
- #: admin/views/ad-output-metabox.php:49
2291
- msgid "left:"
 
 
 
2292
  msgstr ""
2293
 
2294
- #: admin/views/ad-output-metabox.php:53
2295
- msgid "tip: use this to add a margin around the ad"
2296
  msgstr ""
2297
 
2298
- #: admin/views/ad-output-metabox.php:56
2299
- msgid "container ID"
2300
  msgstr ""
2301
 
2302
- #: admin/views/ad-output-metabox.php:62
2303
- msgid "Specify the id of the ad container. Leave blank for random or no id."
 
2304
  msgstr ""
2305
 
2306
- #: admin/views/ad-output-metabox.php:66
2307
- msgid "container classes"
 
2308
  msgstr ""
2309
 
2310
- #: admin/views/ad-output-metabox.php:72
2311
  msgid ""
2312
- "Specify one or more classes for the container. Separate multiple classes "
2313
- "with a space"
2314
  msgstr ""
2315
 
2316
- #: admin/views/ad-output-metabox.php:75
2317
- msgid "Enable debug mode"
 
2318
  msgstr ""
2319
 
2320
- #: admin/views/ad-parameters-size.php:9
2321
- msgid "size"
2322
  msgstr ""
2323
 
2324
- #: admin/views/ad-parameters-size.php:11
2325
- msgid "width"
2326
  msgstr ""
2327
 
2328
- #: admin/views/ad-parameters-size.php:12
2329
- msgid "height"
2330
  msgstr ""
2331
 
2332
- #: admin/views/ad-parameters-size.php:20
2333
- msgid "reserve this space"
2334
  msgstr ""
2335
 
2336
- #: admin/views/ad-submitbox-meta.php:5
2337
- msgid "Set expiry date"
 
 
2338
  msgstr ""
2339
 
2340
- #: admin/views/ad-submitbox-meta.php:12
2341
- msgid "Month"
2342
  msgstr ""
2343
 
2344
- #: admin/views/ad-submitbox-meta.php:17
 
2345
  #, php-format
2346
- msgctxt "1: month number (01, 02, etc.), 2: month abbreviation"
2347
- msgid "%1$s-%2$s"
 
2348
  msgstr ""
2349
 
2350
- #: admin/views/ad-submitbox-meta.php:23
2351
- msgid "Day"
 
 
 
2352
  msgstr ""
2353
 
2354
- #: admin/views/ad-submitbox-meta.php:24
2355
- msgid "Year"
 
 
2356
  msgstr ""
2357
 
2358
- #: admin/views/ad-submitbox-meta.php:25
2359
- msgid "Hour"
 
 
2360
  msgstr ""
2361
 
2362
- #: admin/views/ad-submitbox-meta.php:26
2363
- msgid "Minute"
2364
  msgstr ""
2365
 
2366
- #: admin/views/ad-submitbox-meta.php:31
2367
- #, php-format
2368
- msgctxt ""
2369
- "order of expiry date fields 1: month, 2: day, 3: year, 4: hour, 5: minute"
2370
- msgid "%1$s %2$s, %3$s @ %4$s %5$s"
2371
  msgstr ""
2372
 
2373
- #: admin/views/checks.php:14
2374
- #, php-format
2375
- msgid ""
2376
- "Advanced Ads detected potential problems with your ad setup. %1$sShow me "
2377
- "these errors%2$s"
2378
  msgstr ""
2379
 
2380
- #: admin/views/feedback-disable.php:5
2381
- msgid "Why did you decide to disable Advanced Ads?"
2382
  msgstr ""
2383
 
2384
- #: admin/views/feedback-disable.php:7
2385
- msgid "I have a problem, a question or need help."
 
2386
  msgstr ""
2387
 
2388
- #: admin/views/feedback-disable.php:8
2389
- msgid "Please let us know how we can help"
2390
  msgstr ""
2391
 
2392
- #: admin/views/feedback-disable.php:15
2393
- #, php-format
2394
- msgid "Send me free help to %s"
2395
  msgstr ""
2396
 
2397
- #: admin/views/feedback-disable.php:20
2398
- msgid "Ads are not showing up"
2399
  msgstr ""
2400
 
2401
- #: admin/views/feedback-disable.php:21
2402
- msgid "It is only temporary"
2403
  msgstr ""
2404
 
2405
- #: admin/views/feedback-disable.php:22
2406
- msgid "I miss a feature"
2407
  msgstr ""
2408
 
2409
- #: admin/views/feedback-disable.php:23
2410
- msgid "Which one?"
2411
  msgstr ""
2412
 
2413
- #: admin/views/feedback-disable.php:24
2414
- msgid "I stopped using ads on my site."
2415
  msgstr ""
2416
 
2417
- #: admin/views/feedback-disable.php:25
2418
- msgid "I switched to another plugin"
 
2419
  msgstr ""
2420
 
2421
- #: admin/views/feedback-disable.php:30
2422
- msgid "Send feedback & deactivate"
 
 
 
2423
  msgstr ""
2424
 
2425
- #: admin/views/feedback-disable.php:31
2426
- msgid "Send feedback"
 
 
 
2427
  msgstr ""
2428
 
2429
- #: admin/views/feedback-disable.php:33
2430
- msgid "Only Deactivate"
 
2431
  msgstr ""
2432
 
2433
- #: admin/views/feedback-disable.php:36
2434
- msgid ""
2435
- "Thanks for submitting your feedback. I will reply within 24 hours on working "
2436
- "days."
2437
  msgstr ""
2438
 
2439
- #. %s is the title of the website
2440
- #: admin/views/feedback-disable.php:41
2441
- #, php-format
2442
- msgid "All the best to you and %s."
2443
  msgstr ""
2444
 
2445
- #: admin/views/feedback-disable.php:42
2446
- msgid "Disabling the plugin now…"
2447
  msgstr ""
2448
 
2449
- #: admin/views/gadsense-dashboard.php:29
2450
- msgid "There is an error in your AdSense setup."
 
2451
  msgstr ""
2452
 
2453
- #: admin/views/pitch-bundle.php:1
2454
- msgid "All Access – with all available add-ons"
 
2455
  msgstr ""
2456
 
2457
- #: admin/views/pitch-bundle.php:12
2458
- msgid "Risk free with 30-day Money-Back guarantee"
2459
  msgstr ""
2460
 
2461
- #: admin/views/pitch-bundle.php:13
2462
- msgid "Get All Access"
 
 
2463
  msgstr ""
2464
 
2465
- #: admin/views/pitch-pro-tab.php:2
2466
- msgid "Advanced Ads Pro – test and optimize your ad performance"
2467
  msgstr ""
2468
 
2469
- #: admin/views/pitch-pro-tab.php:4
2470
- msgid "Ads for Ad Blockers"
2471
  msgstr ""
2472
 
2473
- #: admin/views/pitch-pro-tab.php:5
2474
- msgid "Click Fraud Protection"
2475
  msgstr ""
2476
 
2477
- #: admin/views/pitch-pro-tab.php:6
2478
- msgid "Lazy Loading"
2479
  msgstr ""
2480
 
2481
- #: admin/views/pitch-pro-tab.php:13 admin/views/pitch-tracking.php:10
2482
- msgid "See all features and pricing"
2483
  msgstr ""
2484
 
2485
- #: admin/views/pitch-tracking.php:4
2486
- msgid "track impressions and click on your ads"
2487
  msgstr ""
2488
 
2489
- #: admin/views/pitch-tracking.php:5
2490
- msgid "compare ads and periods"
 
 
2491
  msgstr ""
2492
 
2493
- #: admin/views/pitch-tracking.php:6
2494
- msgid "share reports via link or email"
2495
  msgstr ""
2496
 
2497
- #: admin/views/pitch-tracking.php:7
2498
- msgid "limit ads views by overall number of impressions or clicks"
2499
  msgstr ""
2500
 
2501
- #: admin/views/pitch-tracking.php:8
2502
- msgid "spread impressions or clicks equally over a given period"
2503
  msgstr ""
2504
 
2505
- #: admin/views/placement-form.php:8
2506
- msgid "Choose a placement type"
 
 
 
2507
  msgstr ""
2508
 
2509
- #: admin/views/placement-form.php:9
2510
  #, php-format
2511
  msgid ""
2512
- "Placement types define where the ad is going to be displayed. Learn more "
2513
- "about the different types from the <a href=\"%s\">manual</a>"
2514
- msgstr ""
2515
-
2516
- #: admin/views/placement-form.php:33
2517
- msgid "Please select a placement type."
2518
  msgstr ""
2519
 
2520
- #: admin/views/placement-form.php:35
2521
- msgid "Choose a Name"
2522
  msgstr ""
2523
 
2524
- #: admin/views/placement-form.php:36
 
2525
  msgid ""
2526
- "The name of the placement is only visible to you. Tip: choose a descriptive "
2527
- "one, e.g. <em>Below Post Headline</em>."
2528
  msgstr ""
2529
 
2530
- #: admin/views/placement-form.php:38
2531
- msgid "Placement Name"
 
 
 
 
2532
  msgstr ""
2533
 
2534
- #: admin/views/placement-form.php:39
2535
- msgid "Please enter a name for your placement."
2536
  msgstr ""
2537
 
2538
- #: admin/views/placement-form.php:40
2539
- msgid "Choose the Ad or Group"
2540
  msgstr ""
2541
 
2542
- #: admin/views/placement-form.php:41
2543
- msgid "The ad or group that should be displayed."
2544
  msgstr ""
2545
 
2546
- #: admin/views/placement-form.php:43 admin/views/placements-item.php:2
2547
- msgid "--not selected--"
2548
  msgstr ""
2549
 
2550
- #: admin/views/placement-form.php:60
2551
- msgid "Save New Placement"
2552
  msgstr ""
2553
 
2554
- #: admin/views/placement-injection-top.php:10
2555
- msgid "Congratulations! Your ad is now visible in the frontend."
2556
  msgstr ""
2557
 
2558
- #: admin/views/placement-injection-top.php:11
2559
- msgid "Adjust the placement options"
2560
  msgstr ""
2561
 
2562
- #: admin/views/placement-injection-top.php:12
2563
  #, php-format
2564
  msgid ""
2565
- "Ad not showing up? Take a look <a href=\"%s\" target=\"_blank\">here</a>"
 
2566
  msgstr ""
2567
 
2568
- #: admin/views/placement-injection-top.php:15
2569
- msgid "Where do you want to display the ad?"
 
2570
  msgstr ""
2571
 
2572
- #: admin/views/placement-injection-top.php:24
2573
- #: modules/gadsense/admin/admin.php:178
2574
- #, php-format
2575
- msgid ""
2576
- "The AdSense verification and Auto ads code is already activated in the <a "
2577
- "href=\"%s\">AdSense settings</a>."
2578
  msgstr ""
2579
 
2580
- #: admin/views/placement-injection-top.php:30
2581
- #: modules/gadsense/admin/admin.php:180
2582
- msgid ""
2583
- "No need to add the code manually here, unless you want to include it into "
2584
- "certain pages only."
2585
  msgstr ""
2586
 
2587
- #: admin/views/placement-injection-top.php:33
2588
- msgid ""
2589
- "Click on the button below to add the Auto ads code to the header of your "
2590
- "site."
2591
  msgstr ""
2592
 
2593
- #. this is a label in a button when a user uses an AdSense Auto ads code in a plain code field
2594
- #. the button has barely space for the original English text, so keep it short
2595
- #: admin/views/placement-injection-top.php:42
2596
- msgid "inject Auto ads"
2597
  msgstr ""
2598
 
2599
- #: admin/views/placement-injection-top.php:48
2600
- msgid "New placement"
2601
  msgstr ""
2602
 
2603
- #: admin/views/placement-injection-top.php:52
2604
- msgid "PHP or Shortcode"
2605
  msgstr ""
2606
 
2607
- #: admin/views/placement-injection-top.php:53
2608
- msgid "Manage Sidebar"
2609
  msgstr ""
2610
 
2611
- #: admin/views/placement-injection-top.php:54
2612
- msgid "Header (Manual)"
2613
  msgstr ""
2614
 
2615
- #: admin/views/placement-injection-top.php:58
2616
- #: admin/views/placement-injection-top.php:62
2617
- msgid "Custom Position"
2618
  msgstr ""
2619
 
2620
- #: admin/views/placement-injection-top.php:58
2621
- msgid "Show Pro Places"
2622
  msgstr ""
2623
 
2624
- #: admin/views/placement-injection-top.php:67
2625
- msgid "AdSense In-feed"
2626
  msgstr ""
2627
 
2628
- #: admin/views/placement-injection-top.php:73
2629
- msgid "Show Sticky Places"
2630
  msgstr ""
2631
 
2632
- #: admin/views/placement-injection-top.php:79
2633
- msgid "Show PopUp"
2634
  msgstr ""
2635
 
2636
- #: admin/views/placement-injection-top.php:83
2637
- msgid "PopUp & Layer"
2638
  msgstr ""
2639
 
2640
- #: admin/views/placement-injection-top.php:88
2641
- msgid "see all…"
2642
  msgstr ""
2643
 
2644
- #: admin/views/placement-injection-top.php:120
2645
- msgid "Existing placement"
2646
  msgstr ""
2647
 
2648
- #: admin/views/placement-injection-top.php:125
2649
- #, php-format
2650
- msgid "Or use the shortcode %s to insert the ad into the content manually."
2651
  msgstr ""
2652
 
2653
- #: admin/views/placement-injection-top.php:126
2654
- #, php-format
2655
- msgid ""
2656
- "Learn more about your choices to display an ad in the <a href=\"%s\" "
2657
- "target=\"_blank\">manual</a>."
2658
  msgstr ""
2659
 
2660
- #: admin/views/placements-ad-label-position.php:24
2661
- msgid ""
2662
- "Check this if you don't want the following elements to float around the ad. "
2663
- "(adds a placement_clearfix)"
2664
  msgstr ""
2665
 
2666
- #: admin/views/placements-ad-label.php:6 admin/views/placements-ad-label.php:9
2667
- #: modules/ads-txt/admin/views/setting-create.php:2
2668
- #: modules/ads-txt/admin/views/setting-create.php:4
2669
- msgid "enabled"
2670
  msgstr ""
2671
 
2672
- #: admin/views/placements-ad-label.php:11
2673
- #: admin/views/placements-ad-label.php:14
2674
- #: modules/ads-txt/admin/views/setting-create.php:6
2675
- #: modules/ads-txt/admin/views/setting-create.php:8
2676
- msgid "disabled"
2677
  msgstr ""
2678
 
2679
- #: admin/views/placements-content-index.php:2
2680
- msgid "after"
 
2681
  msgstr ""
2682
 
2683
- #: admin/views/placements-content-index.php:3
2684
- msgid "before"
2685
  msgstr ""
2686
 
2687
- #: admin/views/placements-content-index.php:30
2688
- msgid "start counting from bottom"
2689
  msgstr ""
2690
 
2691
- #: admin/views/placements.php:10
2692
  msgid ""
2693
- "Couldn’t create the new placement. Please check your form field and whether "
2694
- "the name is already in use."
 
 
2695
  msgstr ""
2696
 
2697
- #: admin/views/placements.php:14
2698
- msgid "Placements updated"
 
 
 
2699
  msgstr ""
2700
 
2701
- #: admin/views/placements.php:20 admin/views/placements.php:209
2702
- msgid "Create a new placement"
2703
  msgstr ""
2704
 
2705
- #: admin/views/placements.php:21 admin/views/placements.php:211
2706
- msgid "New Placement"
2707
  msgstr ""
2708
 
2709
- #: admin/views/placements.php:26
2710
- msgid ""
2711
- "Placements are physically places in your theme and posts. You can use them "
2712
- "if you plan to change ads and ad groups on the same place without the need "
2713
- "to change your templates."
2714
  msgstr ""
2715
 
2716
- #: admin/views/placements.php:27
2717
  #, php-format
2718
- msgid ""
2719
- "See also the manual for more information on <a href=\"%s\">placements</a>."
2720
  msgstr ""
2721
 
2722
- #: admin/views/placements.php:43 modules/import-export/views/page.php:26
2723
- msgid "Options"
2724
  msgstr ""
2725
 
2726
- #: admin/views/placements.php:65
2727
- #, php-format
2728
- msgid ""
2729
- "Placement type \"%s\" is missing and was reset to \"default\".<br/>Please "
2730
- "check if the responsible add-on is activated."
2731
  msgstr ""
2732
 
2733
- #: admin/views/placements.php:93
2734
- msgid "show usage"
2735
  msgstr ""
2736
 
2737
- #: admin/views/placements.php:105
2738
- msgid "template (PHP)"
2739
  msgstr ""
2740
 
2741
- #: admin/views/placements.php:120
2742
- msgid "Item"
 
 
 
2743
  msgstr ""
2744
 
2745
- #: admin/views/placements.php:134
2746
- msgid "position"
2747
  msgstr ""
2748
 
2749
- #: admin/views/placements.php:140
2750
- msgid "Important Notice"
2751
  msgstr ""
2752
 
2753
- #: admin/views/placements.php:162
2754
- msgid "ad label"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2755
  msgstr ""
2756
 
2757
- #: admin/views/placements.php:172
2758
- msgid "show all options"
2759
  msgstr ""
2760
 
2761
- #: admin/views/placements.php:191
2762
  #, php-format
2763
  msgid ""
2764
- "Tutorial: <a href=\"%s\" target=\"_blank\">How to place visible ads in the "
2765
- "header of your website</a>."
2766
  msgstr ""
2767
 
2768
- #: admin/views/placements.php:200
2769
- msgctxt "checkbox to remove placement"
2770
- msgid "delete"
2771
  msgstr ""
2772
 
2773
- #: admin/views/placements.php:207
2774
- msgid "Save Placements"
2775
  msgstr ""
2776
 
2777
- #: admin/views/post-ad-settings-metabox.php:1
2778
- msgid "How to disable ads on specific pages"
 
 
2779
  msgstr ""
2780
 
2781
- #: admin/views/post-ad-settings-metabox.php:5
2782
- msgid "Disable ads on this page"
2783
  msgstr ""
2784
 
2785
- #: admin/views/setting-license.php:5
2786
- msgid "Your license expired."
2787
  msgstr ""
2788
 
2789
- #: admin/views/setting-license.php:13
2790
- msgid "Update expiry date"
2791
  msgstr ""
2792
 
2793
- #: admin/views/setting-license.php:18
2794
- #, php-format
2795
- msgid ""
2796
- "Click on %2$s if you renewed it or have a subscription or <a href=\"%1$s\" "
2797
- "class=\"advads-renewal-link\" target=\"_blank\">renew your license</a>."
2798
  msgstr ""
2799
 
2800
- #: admin/views/setting-license.php:30
2801
- #, php-format
2802
- msgid "(%d days left)"
2803
  msgstr ""
2804
 
2805
- #: admin/views/setting-license.php:34
2806
- msgid "License key"
2807
  msgstr ""
2808
 
2809
- #: admin/views/setting-license.php:51
2810
- msgid "Deactivate License"
2811
  msgstr ""
2812
 
2813
- #: admin/views/setting-license.php:57
2814
- msgid "Update License"
2815
  msgstr ""
2816
 
2817
- #: admin/views/setting-license.php:57
2818
- msgid "Activate License"
 
2819
  msgstr ""
2820
 
2821
- #: admin/views/setting-license.php:62
2822
- msgid "License key invalid"
2823
  msgstr ""
2824
 
2825
- #: admin/views/setting-license.php:70
2826
- msgid "active"
2827
  msgstr ""
2828
 
2829
- #: admin/views/setting-target.php:4
2830
- msgid ""
2831
- "Open programatically created links in a new window (use <code>"
2832
- "target=\"_blank\"</code>)"
2833
  msgstr ""
2834
 
2835
- #: admin/views/settings-disable-ads.php:2
2836
- msgid "Disable all ads in frontend"
2837
  msgstr ""
2838
 
2839
- #: admin/views/settings-disable-ads.php:3
2840
- msgid ""
2841
- "Use this option to disable all ads in the frontend, but still be able to use "
2842
- "the plugin."
2843
  msgstr ""
2844
 
2845
- #: admin/views/settings-disable-ads.php:8
2846
- msgid "Disable ads on 404 error pages"
2847
  msgstr ""
2848
 
2849
- #: admin/views/settings-disable-ads.php:12
2850
- msgid "Disable ads on non-singular pages"
2851
  msgstr ""
2852
 
2853
- #: admin/views/settings-disable-ads.php:13
2854
- msgid ""
2855
- "e.g. archive pages like categories, tags, authors, front page (if a list)"
2856
  msgstr ""
2857
 
2858
- #: admin/views/settings-disable-ads.php:18
2859
- msgid "Disable ads on secondary queries"
2860
  msgstr ""
2861
 
2862
- #: admin/views/settings-disable-ads.php:19
2863
  msgid ""
2864
- "Secondary queries are custom queries of posts outside the main query of a "
2865
- "page. Try this option if you see ads injected on places where they shouldn’t "
2866
- "appear."
2867
  msgstr ""
2868
 
2869
- #: admin/views/settings-disable-ads.php:25
2870
- msgid "Disable ads in RSS Feed"
 
 
2871
  msgstr ""
2872
 
2873
- #: admin/views/settings.php:13
2874
- msgid "General"
2875
  msgstr ""
2876
 
2877
- #: admin/views/settings.php:42
2878
- msgid "Save settings on this page"
 
2879
  msgstr ""
2880
 
2881
- #: admin/views/settings.php:49 modules/import-export/main.php:15
2882
- #: modules/import-export/main.php:15
2883
- msgid "Import &amp; Export"
2884
  msgstr ""
2885
 
2886
- #: admin/views/support-callout.php:3
2887
- msgid "Problems or questions?"
 
2888
  msgstr ""
2889
 
2890
- #: admin/views/support-callout.php:4
2891
- msgid "Save time and get personal support."
2892
  msgstr ""
2893
 
2894
- #: admin/views/support-callout.php:4
2895
- msgid "Ask your question!"
 
2896
  msgstr ""
2897
 
2898
- #: admin/views/support.php:6
2899
- msgid ""
2900
- "Please fix the red highlighted issues on this page or try to understand "
2901
- "their consequences before contacting support."
2902
  msgstr ""
2903
 
2904
- #: admin/views/support.php:7
2905
- msgid "Possible Issues"
 
 
2906
  msgstr ""
2907
 
2908
- #: admin/views/support.php:9
2909
- msgid "Ads not showing up"
 
 
2910
  msgstr ""
2911
 
2912
- #: admin/views/support.php:10
2913
- msgid "Purchase & Licenses"
 
 
2914
  msgstr ""
2915
 
2916
- #: admin/views/support.php:11
2917
- msgid "General Issues"
 
 
2918
  msgstr ""
2919
 
2920
- #: admin/views/support.php:12
2921
- msgid "Issues with Add-Ons"
2922
  msgstr ""
2923
 
2924
- #: admin/views/support.php:14
2925
- msgid ""
2926
- "Use the following form to search for solutions in the manual on "
2927
- "wpadvancedads.com"
2928
  msgstr ""
2929
 
2930
- #: admin/views/support.php:17
2931
- msgid "search"
2932
  msgstr ""
2933
 
2934
- #: admin/views/support.php:20
2935
- #, php-format
2936
- msgid ""
2937
- "Take a look at more common issues or contact us directly through the <a "
2938
- "href=\"%s\" target=\"_blank\">support page</a>."
2939
  msgstr ""
2940
 
2941
- #: admin/views/support.php:22
2942
- #, php-format
2943
- msgid ""
2944
- "Upgrade to any premium add-on and get <strong>priority email support</strong>"
2945
- " or reach out through the <a href=\"%s\" target=\"_blank\">support forum</a> "
2946
- "for individual help."
2947
  msgstr ""
2948
 
2949
- #: public/views/ad-debug.php:6
2950
- msgid "Ad debug output"
2951
  msgstr ""
2952
 
2953
- #: public/views/ad-debug.php:8
2954
- msgid "Find solutions in the manual"
2955
  msgstr ""
2956
 
2957
- #: admin/views/conditions/ad-display-metabox.php:17
2958
- msgid ""
2959
- "Click on the button below if the ad should NOT show up on all pages when "
2960
- "included automatically."
2961
  msgstr ""
2962
 
2963
- #: admin/views/conditions/ad-display-metabox.php:19
2964
- msgid "Hide the ad on some pages"
2965
  msgstr ""
2966
 
2967
- #: admin/views/conditions/ad-display-metabox.php:34
2968
- msgid "Watch video"
 
 
2969
  msgstr ""
2970
 
2971
- #: admin/views/conditions/ad-display-metabox.php:46
2972
- #: admin/views/notices/jqueryui_error.php:2
2973
- #, php-format
2974
- msgid ""
2975
- "There might be a problem with layouts and scripts in your dashboard. Please "
2976
- "check <a href=\"%s\" target=\"_blank\">this article to learn more</a>."
2977
  msgstr ""
2978
 
2979
- #: admin/views/conditions/ad-display-metabox.php:47
2980
- msgid "A page with this ad on it must match all of the following conditions."
2981
  msgstr ""
2982
 
2983
- #: admin/views/conditions/ad-visitor-metabox.php:17
2984
- msgid ""
2985
- "Click on the button below if the ad should NOT be visible to all visitors"
 
 
 
2986
  msgstr ""
2987
 
2988
- #: admin/views/conditions/ad-visitor-metabox.php:19
2989
- msgid "Hide the ad from some users"
2990
  msgstr ""
2991
 
2992
- #: admin/views/conditions/ad-visitor-metabox.php:29
 
2993
  msgid ""
2994
- "Display conditions that are based on the user. Use with caution on cached "
2995
- "websites."
2996
  msgstr ""
2997
 
2998
- #: admin/views/conditions/condition-author.php:28
2999
  #, php-format
3000
- msgid ""
3001
- "Only %d elements are displayed above. Use the <code>advanced-ads-admin-max-"
3002
- "terms</code> filter to change this limit according to <a href=\"%s\" "
3003
- "target=\"_blank\">this page</a>."
3004
  msgstr ""
3005
 
3006
- #: admin/views/conditions/condition-device.php:3
3007
- msgid "Mobile (including tablets)"
 
3008
  msgstr ""
3009
 
3010
- #: admin/views/conditions/condition-device.php:4
3011
- msgid "Desktop"
3012
  msgstr ""
3013
 
3014
- #: admin/views/conditions/condition-device.php:9
3015
- #: admin/views/conditions/condition-is-or-not.php:9
3016
- msgid "Manual and Troubleshooting"
3017
  msgstr ""
3018
 
3019
- #: admin/views/conditions/condition-is-or-not.php:3
3020
- #: admin/views/conditions/condition-operator.php:2
3021
- msgid "is"
3022
  msgstr ""
3023
 
3024
- #: admin/views/conditions/condition-is-or-not.php:4
3025
- #: admin/views/conditions/condition-operator.php:3
3026
- msgid "is not"
 
 
3027
  msgstr ""
3028
 
3029
- #: admin/views/conditions/condition-number.php:3
3030
- msgid "equal"
 
3031
  msgstr ""
3032
 
3033
- #: admin/views/conditions/condition-number.php:4
3034
- msgid "equal or higher"
3035
  msgstr ""
3036
 
3037
- #: admin/views/conditions/condition-number.php:5
3038
- msgid "equal or lower"
3039
  msgstr ""
3040
 
3041
- #: admin/views/conditions/conditions-form.php:8
3042
- msgid "New condition"
3043
  msgstr ""
3044
 
3045
- #: admin/views/conditions/conditions-form.php:13
3046
- msgid "-- choose a condition --"
3047
  msgstr ""
3048
 
3049
- #: admin/views/conditions/conditions-form.php:22
3050
- msgid "Add-On features"
3051
  msgstr ""
3052
 
3053
- #: admin/views/conditions/display-conditions-form-top.php:4
3054
- msgid "If you want to display the ad everywhere, don't do anything here. "
3055
  msgstr ""
3056
 
3057
- #: admin/views/conditions/display-conditions-list.php:45
3058
- msgid "Forced to OR."
 
 
3059
  msgstr ""
3060
 
3061
- #: admin/views/conditions/display-conditions-list.php:46
3062
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:121
3063
- msgid "manual"
 
3064
  msgstr ""
3065
 
3066
- #: admin/views/conditions/no-option.php:7
3067
- #, php-format
3068
- msgctxt ""
3069
- "Error message shown when no terms exists for display condition; placeholder "
3070
- "is taxonomy label."
3071
- msgid "No %s found on your site."
3072
  msgstr ""
3073
 
3074
- #: admin/views/conditions/not-selected.php:2
3075
- msgctxt "Error message shown when no display condition term is selected"
3076
- msgid "Please select some items."
 
3077
  msgstr ""
3078
 
3079
- #: admin/views/conditions/visitor-conditions-form-top.php:4
3080
- msgid ""
3081
- "Visitor conditions limit the number of users who can see your ad. There is "
3082
- "no need to set visitor conditions if you want all users to see the ad."
 
3083
  msgstr ""
3084
 
3085
- #: admin/views/conditions/visitor-conditions-form-top.php:9
3086
- #: modules/privacy/admin/views/setting-enable.php:4
3087
- msgid "It seems that a caching plugin is activated."
3088
  msgstr ""
3089
 
3090
- #: admin/views/conditions/visitor-conditions-form-top.php:11
3091
- #, php-format
3092
- msgid ""
3093
- "Check out cache-busting in <a href=\"%s\" target=\"_blank\">Advanced Ads "
3094
- "Pro</a> if dynamic features get cached."
3095
  msgstr ""
3096
 
3097
  #: admin/views/notices/adblock.php:4
@@ -3116,6 +3060,14 @@ msgstr ""
3116
  msgid "See them in action"
3117
  msgstr ""
3118
 
 
 
 
 
 
 
 
 
3119
  #: admin/views/notices/welcome-panel.php:10
3120
  msgid "Welcome to Advanced Ads!"
3121
  msgstr ""
@@ -3158,260 +3110,247 @@ msgstr ""
3158
  msgid "Setting up AdSense ads manually"
3159
  msgstr ""
3160
 
3161
- #: modules/ad-blocker/admin/admin.php:96
3162
- msgid "Ad blocker fix"
3163
- msgstr ""
3164
-
3165
- #: modules/ad-blocker/admin/admin.php:150
3166
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:372
3167
- msgid "Unable to connect to the filesystem. Please confirm your credentials."
3168
- msgstr ""
3169
-
3170
- #: modules/ad-blocker/admin/admin.php:165
3171
- msgid "The asset folder was rebuilt successfully"
3172
  msgstr ""
3173
 
3174
- #: modules/ad-blocker/admin/admin.php:226
3175
- msgid "There is no writable upload folder"
 
3176
  msgstr ""
3177
 
3178
- #: modules/ad-blocker/admin/admin.php:255
3179
- #, php-format
3180
- msgid "Unable to rename \"%s\" directory"
3181
  msgstr ""
3182
 
3183
- #: modules/ad-blocker/admin/admin.php:271
3184
- #: modules/ad-blocker/admin/admin.php:284
3185
- #: modules/ad-blocker/admin/admin.php:301
3186
- #, php-format
3187
- msgid "Unable to copy assets to the \"%s\" directory"
3188
  msgstr ""
3189
 
3190
- #: modules/ad-blocker/admin/admin.php:334
3191
- #: modules/ad-blocker/admin/admin.php:419
3192
- #, php-format
3193
- msgid "We do not have direct write access to the \"%s\" directory"
3194
  msgstr ""
3195
 
3196
- #: modules/ad-blocker/admin/admin.php:430
3197
- #, php-format
3198
- msgid "Unable to copy files to %s"
3199
  msgstr ""
3200
 
3201
- #: modules/adblock-finder/admin/admin.php:16
3202
- msgid "Ad Blocker"
3203
  msgstr ""
3204
 
3205
- #: modules/adblock-finder/admin/admin.php:23
3206
- msgid "Ad blocker counter"
 
3207
  msgstr ""
3208
 
3209
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:176
3210
- #, php-format
3211
  msgid ""
3212
- "The ads.txt file cannot be placed because the URL contains a subdirectory. "
3213
- "You need to make the file available at %s"
3214
- msgstr ""
3215
-
3216
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:187
3217
- #, php-format
3218
- msgid "The file is available on %s."
3219
- msgstr ""
3220
-
3221
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:191
3222
- msgid "The file was not created."
3223
- msgstr ""
3224
-
3225
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:197
3226
- msgid "Find the solution here"
3227
- msgstr ""
3228
-
3229
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:208
3230
- msgid "Import & Replace"
3231
  msgstr ""
3232
 
3233
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:210
3234
- msgid ""
3235
- "Move the content of the existing ads.txt file into Advanced Ads and remove "
3236
- "it."
3237
  msgstr ""
3238
 
3239
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:217
3240
- #: modules/ads-txt/admin/views/setting-additional-content.php:4
3241
  #, php-format
3242
- msgid "An error occured: %s."
 
 
3243
  msgstr ""
3244
 
3245
- #. %s the line that may need to be added manually
3246
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:230
3247
  #, php-format
3248
  msgid ""
3249
- "If your site is located on a subdomain, you need to add the following line "
3250
- "to the ads.txt file of the root domain: %s"
3251
- msgstr ""
3252
-
3253
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:345
3254
- msgid "The ads.txt is now managed with Advanced Ads."
3255
  msgstr ""
3256
 
3257
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:390
3258
- msgid "Not the main blog"
3259
  msgstr ""
3260
 
3261
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:419
3262
- msgid "Could not delete the existing ads.txt file"
 
3263
  msgstr ""
3264
 
3265
- #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:422
3266
- msgid "Could not find the existing ads.txt file"
 
 
3267
  msgstr ""
3268
 
3269
- #: modules/gadsense/admin/admin.php:121
3270
- #, php-format
3271
- msgid ""
3272
- "Responsive AdSense ads don’t work reliably with <em>Position</em> set to "
3273
- "left or right. Either switch the <em>Type</em> to \"normal\" or follow <a "
3274
- "href=\"%s\" target=\"_blank\">this tutorial</a> if you want the ad to be "
3275
- "wrapped in text."
3276
  msgstr ""
3277
 
3278
- #: modules/gadsense/admin/admin.php:127
3279
- #, php-format
3280
- msgid ""
3281
- "<a href=\"%s\" target=\"_blank\">Install the free AdSense In-feed add-on</a> "
3282
- "in order to place ads between posts."
3283
  msgstr ""
3284
 
3285
- #: modules/gadsense/admin/admin.php:134
3286
- #, php-format
3287
- msgid ""
3288
- "Use the <a href=\"%s\" target=\"_blank\">Responsive add-on</a> in order to "
3289
- "define the exact size for each browser width or choose between horizontal, "
3290
- "vertical, or rectangle formats."
3291
  msgstr ""
3292
 
3293
- #: modules/gadsense/admin/admin.php:182
3294
  #, php-format
3295
- msgid ""
3296
- "The AdSense verification and Auto ads code should be set up in the <a "
3297
- "href=\"%s\">AdSense settings</a>. Click on the following button to enable it "
3298
- "now."
3299
- msgstr ""
3300
-
3301
- #: modules/gadsense/admin/admin.php:183
3302
- msgid "Activate"
3303
  msgstr ""
3304
 
3305
- #: modules/gadsense/admin/dummy.php:61
3306
- msgid "Dummy Account Id"
3307
  msgstr ""
3308
 
3309
- #: modules/gadsense/includes/class-ad-type-adsense.php:33
3310
- msgid "AdSense ad"
3311
  msgstr ""
3312
 
3313
- #: modules/gadsense/includes/class-ad-type-adsense.php:34
3314
- msgid "Use ads from your Google AdSense account"
3315
  msgstr ""
3316
 
3317
- #: modules/gadsense/includes/class-ad-type-adsense.php:90
3318
- #: modules/gadsense/admin/views/adsense-account.php:83
3319
- msgid "The Publisher ID has an incorrect format. (must start with \"pub-\")"
3320
  msgstr ""
3321
 
3322
- #: modules/gadsense/includes/class-ad-type-adsense.php:131
3323
- msgid "Your AdSense Publisher ID is missing."
3324
  msgstr ""
3325
 
3326
- #. we replace AdSense code with a dummy ad code in the Customizer and Elementor since AdSense could cause them to break. This is the text within that dummy ad.
3327
- #: modules/gadsense/includes/class-ad-type-adsense.php:226
3328
- msgid "This will be an AdSense ad on your live site."
3329
  msgstr ""
3330
 
3331
- #: modules/gadsense/includes/class-adsense-report.php:472
3332
- #: modules/gadsense/includes/class-adsense-report.php:498
3333
- msgid "Never"
3334
  msgstr ""
3335
 
3336
- #: modules/gadsense/includes/class-gadsense-data.php:40
3337
- msgid "Auto"
 
 
3338
  msgstr ""
3339
 
3340
- #: modules/gadsense/includes/class-mapi.php:339
3341
  #, php-format
3342
  msgid "Error while retrieving ad code for \"%s\"."
3343
  msgstr ""
3344
 
3345
- #: modules/gadsense/includes/class-mapi.php:360
3346
  #, php-format
3347
  msgid "Invalid response while retrieving ad code for \"%s\"."
3348
  msgstr ""
3349
 
3350
- #: modules/gadsense/includes/class-mapi.php:401
3351
  #, php-format
3352
  msgid "Error while retrieving adUnits list for \"%s\"."
3353
  msgstr ""
3354
 
3355
- #: modules/gadsense/includes/class-mapi.php:408
3356
  #, php-format
3357
  msgid "Invalid response while retrieving adUnits list for \"%s\"."
3358
  msgstr ""
3359
 
3360
- #: modules/gadsense/includes/class-mapi.php:416
3361
  msgid "Reason:"
3362
  msgstr ""
3363
 
3364
- #: modules/gadsense/includes/class-mapi.php:417
3365
  msgid "Message:"
3366
  msgstr ""
3367
 
3368
  #. %1$s is the AdSense publisher ID; %2$s a starting a tag to the AdSense ad unit list and %3$s the closing link.
3369
- #: modules/gadsense/includes/class-mapi.php:432
3370
  #, php-format
3371
  msgid ""
3372
  "The account \"%1$s\" does not seem to have any ad units. Please create some "
3373
  "%2$shere%3$s."
3374
  msgstr ""
3375
 
3376
- #: modules/gadsense/includes/class-mapi.php:494
3377
  msgid ""
3378
  "It seems that some changes have been made in the Advanced Ads settings. "
3379
  "Please refresh this page."
3380
  msgstr ""
3381
 
3382
- #: modules/gadsense/includes/class-mapi.php:501
3383
  #, php-format
3384
  msgid ""
3385
  "Advanced Ads does not have access to your account (<code>%s</code>) anymore."
3386
  msgstr ""
3387
 
3388
- #: modules/gadsense/includes/class-mapi.php:543
3389
  #, php-format
3390
  msgid "error while renewing access token for \"%s\""
3391
  msgstr ""
3392
 
3393
- #: modules/gadsense/includes/class-mapi.php:568
3394
  #, php-format
3395
  msgid "invalid response received while renewing access token for \"%s\""
3396
  msgstr ""
3397
 
3398
- #: modules/gadsense/includes/class-mapi.php:797
 
 
 
 
3399
  msgid "Invalid response body while retrieving account alerts"
3400
  msgstr ""
3401
 
3402
- #: modules/gadsense/includes/class-mapi.php:806
3403
  msgid "error while retrieving account alerts"
3404
  msgstr ""
3405
 
3406
- #: modules/gadsense/includes/class-mapi.php:961
3407
  msgid "No token provided. Token data needed to get account details."
3408
  msgstr ""
3409
 
3410
- #: modules/gadsense/includes/class-mapi.php:1025
3411
  msgid "An error occurred while requesting account details."
3412
  msgstr ""
3413
 
3414
- #: modules/gadsense/includes/class-mapi.php:1374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3415
  #, php-format
3416
  msgid ""
3417
  "There are one or more warnings about the currently linked AdSense account. "
@@ -3420,13 +3359,22 @@ msgstr ""
3420
 
3421
  #. 1:A link to the settings page
3422
  #. 2:The name of an ad network
3423
- #: modules/gadsense/includes/class-mapi.php:1461
3424
  #, php-format
3425
  msgid ""
3426
  "Please try to <a href=\"%1$s\" target=\"_blank\">reconnect to your %2$s "
3427
  "account</a>."
3428
  msgstr ""
3429
 
 
 
 
 
 
 
 
 
 
3430
  #: modules/gadsense/includes/class-network-adsense.php:34
3431
  msgid "AdSense account"
3432
  msgstr ""
@@ -3494,7 +3442,7 @@ msgid ""
3494
  msgstr ""
3495
 
3496
  #: modules/gadsense/includes/class-network-adsense.php:194
3497
- #: modules/gadsense/admin/views/connect-adsense.php:37
3498
  msgid ""
3499
  "Insert the AdSense header code used for verification and the Auto Ads "
3500
  "feature."
@@ -3512,10 +3460,6 @@ msgid ""
3512
  "appear in random places</strong>."
3513
  msgstr ""
3514
 
3515
- #: modules/gadsense/includes/class-network-adsense.php:202
3516
- msgid "Display Auto ads only on specific pages"
3517
- msgstr ""
3518
-
3519
  #: modules/gadsense/includes/class-network-adsense.php:203
3520
  msgid "Auto ads on AMP pages"
3521
  msgstr ""
@@ -3553,11 +3497,136 @@ msgid ""
3553
  "use the full width</a> of your visitor's mobile device screen"
3554
  msgstr ""
3555
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3556
  #. Name of the plugin
3557
  #: modules/gutenberg/includes/class-gutenberg.php:78
3558
  msgid "Advanced Ads"
3559
  msgstr ""
3560
 
 
 
 
 
 
 
 
 
3561
  #: modules/import-export/classes/import.php:66
3562
  msgid "Please enter XML content"
3563
  msgstr ""
@@ -3735,104 +3804,64 @@ msgstr ""
3735
  msgid "Start import"
3736
  msgstr ""
3737
 
3738
- #: modules/privacy/admin/admin.php:63
3739
- msgid "Privacy"
3740
- msgstr ""
3741
-
3742
- #: modules/privacy/admin/admin.php:84
3743
- msgid "Enable Privacy module"
3744
- msgstr ""
3745
-
3746
- #: modules/privacy/admin/admin.php:87
3747
- msgid "Consent method"
3748
- msgstr ""
3749
-
3750
- #: modules/privacy/classes/plugin.php:149
3751
- msgid "Show all ads even without consent."
3752
- msgstr ""
3753
-
3754
- #: modules/privacy/classes/plugin.php:150
3755
- msgid "Cookie"
3756
- msgstr ""
3757
-
3758
- #: modules/ad-blocker/admin/views/rebuild_form.php:1
3759
- msgid "Ad blocker file folder"
3760
- msgstr ""
3761
-
3762
- #: modules/ad-blocker/admin/views/rebuild_form.php:10
3763
- msgid "Upload folder is not writable"
3764
- msgstr ""
3765
-
3766
- #: modules/ad-blocker/admin/views/rebuild_form.php:23
3767
- msgid "Asset path"
3768
- msgstr ""
3769
-
3770
- #: modules/ad-blocker/admin/views/rebuild_form.php:27
3771
- msgid "Asset URL"
3772
- msgstr ""
3773
-
3774
- #: modules/ad-blocker/admin/views/rebuild_form.php:31
3775
- msgid "Rename assets"
3776
  msgstr ""
3777
 
3778
- #: modules/ad-blocker/admin/views/rebuild_form.php:34
3779
- msgid "Check if you want to change the names of the assets"
 
3780
  msgstr ""
3781
 
3782
- #: modules/ad-blocker/admin/views/rebuild_form.php:43
3783
- #, php-format
3784
- msgid ""
3785
- "Please, rebuild the asset folder. All assets will be located in <strong>"
3786
- "%s</strong>"
3787
  msgstr ""
3788
 
3789
- #: modules/ad-blocker/admin/views/rebuild_form.php:46
3790
- msgid "Rebuild asset folder"
3791
  msgstr ""
3792
 
3793
- #: modules/ad-blocker/admin/views/setting-use-adblocker.php:4
3794
- msgid ""
3795
- "The ad block disguise can only be set by the super admin on the main site in "
3796
- "the network."
3797
  msgstr ""
3798
 
3799
- #: modules/ad-blocker/admin/views/setting-use-adblocker.php:6
3800
  msgid ""
3801
- "Prevents ad block software from breaking your website when blocking asset "
3802
- "files (.js, .css)."
3803
  msgstr ""
3804
 
3805
- #: modules/ad-blocker/admin/views/setting-use-adblocker.php:8
 
3806
  #, php-format
3807
- msgid ""
3808
- "Learn how to display alternative content to ad block users <a href=\"%s\" "
3809
- "target=\"_blank\">in the manual</a>."
3810
  msgstr ""
3811
 
3812
- #: modules/adblock-finder/admin/views/setting-ga.php:2
 
 
3813
  msgid ""
3814
- "Want to know how many of your visitors are using an ad blocker? Enter your "
3815
- "Google Analytics property ID above to count them."
3816
  msgstr ""
3817
 
3818
- #: modules/ads-txt/admin/views/setting-additional-content.php:2
3819
- msgid ""
3820
- "Additional records to add to the file, one record per line. AdSense is added "
3821
- "automatically."
3822
  msgstr ""
3823
 
3824
- #: modules/ads-txt/admin/views/setting-additional-content.php:5
3825
- msgid "Check for problems"
3826
  msgstr ""
3827
 
3828
- #: modules/ads-txt/admin/views/setting-create.php:19
3829
- msgid "Generate a single ads.txt file for all sites in the multisite network."
3830
  msgstr ""
3831
 
3832
- #: modules/ads-txt/admin/views/setting-create.php:27
3833
- msgid ""
3834
- "Usually, this should be enabled on the main site of the network - often the "
3835
- "one without a subdomain or subdirectory."
3836
  msgstr ""
3837
 
3838
  #: modules/gadsense/admin/views/adsense-account.php:29
@@ -3872,263 +3901,350 @@ msgstr ""
3872
  msgid "Get a free AdSense account"
3873
  msgstr ""
3874
 
 
 
 
 
3875
  #. %1$s is the opening link tag to our manual; %2$s is the appropriate closing link tag; %3$s is the opening link tag to our help forum; %4$s is the appropriate closing link tag
3876
- #: modules/gadsense/admin/views/adsense-account.php:148
3877
  #, php-format
3878
  msgid ""
3879
  "Problems with AdSense? Check out the %1$smanual%2$s or %3$sask here%4$s."
3880
  msgstr ""
3881
 
3882
- #: modules/gadsense/admin/views/adsense-account.php:156
3883
- #: modules/gadsense/admin/views/external-ads-links.php:37
3884
  msgid "Can not connect AdSense account. PHP version is too low."
3885
  msgstr ""
3886
 
3887
- #. this is a label for an ad that we can currently not import from the AdSense account
3888
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:48
3889
- #: modules/gadsense/admin/views/external-ads-list.php:88
3890
- #: modules/gadsense/admin/views/external-ads-list.php:97
3891
- msgid "unsupported"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3892
  msgstr ""
3893
 
3894
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:58
 
 
 
 
3895
  msgid "The ad details couldn't be retrieved from the ad code"
3896
  msgstr ""
3897
 
3898
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:59
3899
  msgid ""
3900
  "Warning: The AdSense account from this code does not match the one set in "
3901
  "the Advanced Ads options."
3902
  msgstr ""
3903
 
3904
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:67
3905
  msgid ""
3906
  "Copy the ad code from your AdSense account, paste it into the area below and "
3907
  "click on <em>Get details</em>."
3908
  msgstr ""
3909
 
3910
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:69
3911
  msgid "Get details"
3912
  msgstr ""
3913
 
3914
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:70
3915
  msgid "cancel"
3916
  msgstr ""
3917
 
3918
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:72
3919
  msgid "connect to your AdSense account"
3920
  msgstr ""
3921
 
3922
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:87
3923
  msgid "Ad Slot ID"
3924
  msgstr ""
3925
 
3926
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:92
3927
  #, php-format
3928
  msgid "Publisher ID: %s"
3929
  msgstr ""
3930
 
3931
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:96
3932
  msgid ""
3933
  "The ad slot ID is either a number or empty and not the same as the publisher "
3934
  "ID."
3935
  msgstr ""
3936
 
3937
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:107
3938
  #, php-format
3939
  msgid "Please <a href=\"%s\" target=\"_blank\">change it here</a>."
3940
  msgstr ""
3941
 
3942
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:113
3943
  msgid "Normal"
3944
  msgstr ""
3945
 
3946
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:115
3947
  msgid "Responsive (Matched Content)"
3948
  msgstr ""
3949
 
3950
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:116
3951
  msgid "Link ads"
3952
  msgstr ""
3953
 
3954
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:117
3955
  msgid "Link ads (Responsive)"
3956
  msgstr ""
3957
 
3958
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:118
3959
- msgid "InArticle"
3960
  msgstr ""
3961
 
3962
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:119
3963
- msgid "InFeed"
3964
  msgstr ""
3965
 
3966
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:124
3967
  msgid "Resizing"
3968
  msgstr ""
3969
 
3970
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:132
3971
  msgid "Layout"
3972
  msgstr ""
3973
 
3974
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:136
3975
  msgid "Layout-Key"
3976
  msgstr ""
3977
 
3978
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:141
3979
  msgid "Clearfix"
3980
  msgstr ""
3981
 
3982
- #: modules/gadsense/admin/views/adsense-ad-parameters.php:144
3983
  msgid "Enable this box if responsive ads cover something on your site"
3984
  msgstr ""
3985
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3986
  #: modules/gadsense/admin/views/connect-adsense.php:35
3987
  msgid "Please enter the confirmation code."
3988
  msgstr ""
3989
 
 
3990
  #: modules/gadsense/admin/views/connect-adsense.php:39
 
 
 
 
 
3991
  msgid "Submit code"
3992
  msgstr ""
3993
 
3994
- #: modules/gadsense/admin/views/connect-adsense.php:47
3995
  msgid "Cannot access your account information."
3996
  msgstr ""
3997
 
3998
- #: modules/gadsense/admin/views/connect-adsense.php:53
3999
  msgid "Please select an account"
4000
  msgstr ""
4001
 
4002
- #: modules/gadsense/admin/views/connect-adsense.php:58
4003
  msgid "Use this account"
4004
  msgstr ""
4005
 
4006
- #. 1: The name of an ad network.
4007
- #: modules/gadsense/admin/views/external-ads-links.php:12
4008
- #, php-format
4009
- msgid "Insert new %1$s code"
4010
- msgstr ""
4011
-
4012
- #: modules/gadsense/admin/views/external-ads-links.php:17
4013
- msgid "Get ad code from your linked account"
4014
  msgstr ""
4015
 
4016
- #. 1: The name of an ad network.
4017
- #: modules/gadsense/admin/views/external-ads-links.php:23
4018
- #, php-format
4019
- msgid "Set up %1$s code manually"
4020
  msgstr ""
4021
 
4022
- #. 1: The name of an ad network.
4023
- #: modules/gadsense/admin/views/external-ads-links.php:30
4024
- #, php-format
4025
- msgid "Connect to %1$s"
4026
  msgstr ""
4027
 
4028
- #: modules/gadsense/admin/views/external-ads-list.php:15
4029
- #: modules/gadsense/admin/views/external-ads-list.php:54
4030
- msgid "Update the ad units list"
 
4031
  msgstr ""
4032
 
4033
- #: modules/gadsense/admin/views/external-ads-list.php:28
4034
- #: modules/gadsense/admin/views/external-ads-list.php:41
4035
- msgctxt "AdSense ad"
4036
- msgid "Ad unit"
 
4037
  msgstr ""
4038
 
4039
- #: modules/gadsense/admin/views/external-ads-list.php:31
4040
- #: modules/gadsense/admin/views/external-ads-list.php:44
4041
- msgctxt "AdSense ad"
4042
- msgid "Slot ID"
4043
  msgstr ""
4044
 
4045
- #: modules/gadsense/admin/views/external-ads-list.php:32
4046
- #: modules/gadsense/admin/views/external-ads-list.php:45
4047
- msgctxt "AdSense ad"
4048
- msgid "Type"
 
4049
  msgstr ""
4050
 
4051
- #: modules/gadsense/admin/views/external-ads-list.php:33
4052
- #: modules/gadsense/admin/views/external-ads-list.php:46
4053
- msgid "Size"
4054
  msgstr ""
4055
 
4056
- #: modules/gadsense/admin/views/external-ads-list.php:53
4057
- msgid "No ad units found"
4058
  msgstr ""
4059
 
4060
- #: modules/gadsense/admin/views/external-ads-list.php:69
4061
- msgid "Get the code for this ad"
4062
  msgstr ""
4063
 
4064
- #: modules/gadsense/admin/views/external-ads-list.php:70
4065
- msgid "Update and get the code for this ad from Google"
4066
  msgstr ""
4067
 
4068
- #: modules/gadsense/admin/views/external-ads-list.php:110
4069
- msgid "Unrecognized ad code"
4070
  msgstr ""
4071
 
4072
- #: modules/gadsense/admin/views/external-ads-list.php:113
4073
- msgid "This ad type can currently not be imported from AdSense."
4074
  msgstr ""
4075
 
4076
- #: modules/gadsense/admin/views/external-ads-list.php:114
4077
- msgid "Learn more and help us to enable it here."
 
 
 
4078
  msgstr ""
4079
 
4080
- #: modules/gadsense/admin/views/external-ads-list.php:115
4081
- msgid "In the meantime, you can use AdSense with one of these methods:"
4082
  msgstr ""
4083
 
4084
- #: modules/gadsense/admin/views/external-ads-list.php:117
4085
  msgid ""
4086
- "Click on <em>Insert new AdSense code</em> and copy the code from your "
4087
- "AdSense account into it."
4088
  msgstr ""
4089
 
4090
- #: modules/gadsense/admin/views/external-ads-list.php:118
4091
  msgid ""
4092
- "Create an ad on the fly. Just select the <em>Normal</em> or <em>"
4093
- "Responsive</em> type and the size."
4094
  msgstr ""
4095
 
4096
- #: modules/gadsense/admin/views/external-ads-list.php:119
 
4097
  msgid ""
4098
- "Choose a <em>Normal</em>, <em>Responsive</em> or <em>Link Unit</em> ad from "
4099
- "your AdSense account."
4100
- msgstr ""
4101
-
4102
- #: modules/privacy/admin/views/setting-ad-ignore-consent.php:2
4103
- msgid "privacy"
4104
  msgstr ""
4105
 
4106
- #: modules/privacy/admin/views/setting-ad-ignore-consent.php:6
4107
- #, php-format
4108
  msgid ""
4109
- "Ignore <a href=\"%s\">general Privacy settings</a> and display the ad even "
4110
- "without consent."
4111
  msgstr ""
4112
 
4113
- #: modules/privacy/admin/views/setting-consent-method.php:12
4114
- msgid "Value"
 
 
4115
  msgstr ""
4116
 
4117
- #: modules/privacy/admin/views/setting-consent-method.php:18
4118
- msgid "Show non-personalized AdSense ads until consent is given."
4119
  msgstr ""
4120
 
4121
- #: modules/privacy/admin/views/setting-enable.php:5
4122
- msgid ""
4123
- "Your users’ consent might get cached and show ads to users who didn’t give "
4124
- "their consent yet. "
4125
  msgstr ""
4126
 
4127
- #: modules/privacy/admin/views/setting-enable.php:6
4128
- #, php-format
4129
  msgid ""
4130
- "Cache-busting in <a href=\"%s\" target=\"_blank\">Advanced Ads Pro</a> "
4131
- "solves that."
4132
  msgstr ""
4133
 
4134
  #. Description of the plugin
3
  msgstr ""
4
  "Project-Id-Version: Advanved Ads\n"
5
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
6
+ "POT-Creation-Date: 2020-01-27 08:27+0000\n"
7
  "POT-Revision-Date: Wed Jul 13 2016 13:23:05 GMT+0200 (CEST)\n"
8
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
23
  "X-Poedit-Basepath: ../\n"
24
  "X-Poedit-SearchPath-0: ."
25
 
26
+ #. %1$s is an anchor (link) opening tag, %2$s is the closing tag.
27
+ #: classes/ad-health-notices.php:854
28
+ #: modules/gadsense/includes/class-mapi.php:1513
29
+ #, php-format
30
+ msgid "Learn more about AdSense account issues %1$shere%2$s."
 
31
  msgstr ""
32
 
33
+ #: classes/ad_type_plain.php:32
34
+ msgid "Plain Text and Code"
 
35
  msgstr ""
36
 
37
+ #: classes/ad_type_plain.php:33
38
+ msgid ""
39
+ "Any ad network, Amazon, customized AdSense codes, shortcodes, and code like "
40
+ "JavaScript, HTML or PHP."
41
  msgstr ""
42
 
43
+ #: classes/ad_type_plain.php:54
44
+ msgid "Insert plain text or code into this field."
45
  msgstr ""
46
 
47
+ #: classes/ad_type_plain.php:95
48
+ msgid "Allow PHP"
49
  msgstr ""
50
 
51
+ #: classes/ad_type_plain.php:99
52
+ msgid "Execute PHP code (wrapped in <code>&lt;?php ?&gt;</code>)"
53
  msgstr ""
54
 
55
+ #: classes/ad_type_plain.php:102
56
+ msgid "No PHP tag detected in your code."
 
 
57
  msgstr ""
58
 
59
+ #: classes/ad_type_plain.php:102 classes/ad_type_plain.php:125
60
+ msgid "Uncheck this checkbox for improved performance."
61
  msgstr ""
62
 
63
+ #: classes/ad_type_plain.php:117
64
+ msgid "Allow shortcodes"
 
 
65
  msgstr ""
66
 
67
+ #: classes/ad_type_plain.php:122
68
+ msgid "Execute shortcodes"
 
69
  msgstr ""
70
 
71
+ #: classes/ad_type_plain.php:125
72
+ msgid "No shortcode detected in your code."
73
  msgstr ""
74
 
75
+ #: classes/EDD_SL_Plugin_Updater.php:228
76
  #, php-format
77
+ msgid ""
78
+ "There is a new version of %1$s available. %2$sView version %3$s details%4$s."
 
 
 
 
 
 
 
 
 
79
  msgstr ""
80
 
81
+ #: classes/EDD_SL_Plugin_Updater.php:236
 
82
  #, php-format
83
  msgid ""
84
+ "There is a new version of %1$s available. %2$sView version %3$s details%4$s "
85
+ "or %5$supdate now%6$s."
86
  msgstr ""
87
 
88
+ #: classes/EDD_SL_Plugin_Updater.php:479
89
+ msgid "You do not have permission to install plugin updates"
90
  msgstr ""
91
 
92
+ #: classes/EDD_SL_Plugin_Updater.php:479
93
+ msgid "Error"
94
  msgstr ""
95
 
96
+ #: classes/filesystem.php:61
97
+ msgid "Could not access filesystem."
98
  msgstr ""
99
 
100
+ #: classes/filesystem.php:65
101
+ msgid "Filesystem error."
102
  msgstr ""
103
 
104
+ #: classes/filesystem.php:72
105
+ msgid "Unable to locate WordPress root directory."
106
  msgstr ""
107
 
108
+ #: classes/filesystem.php:76
109
+ msgid "Unable to locate WordPress content directory (wp-content)."
110
  msgstr ""
111
 
112
+ #: classes/filesystem.php:80
113
+ #, php-format
114
+ msgid "Unable to locate needed folder (%s)."
115
  msgstr ""
116
 
117
+ #: classes/ad_type_image.php:34
118
+ msgid "Image Ad"
119
  msgstr ""
120
 
121
+ #: classes/ad_type_image.php:35
122
+ msgid "Ads in various image formats."
 
123
  msgstr ""
124
 
125
+ #: classes/ad_type_image.php:55
126
+ msgid "Insert File"
 
127
  msgstr ""
128
 
129
+ #: classes/ad_type_image.php:55
130
+ msgid "Insert"
131
  msgstr ""
132
 
133
+ #: classes/ad_type_image.php:55
134
+ msgid "select image"
135
  msgstr ""
136
 
137
+ #: classes/ad_type_image.php:56
138
+ msgid "edit"
139
  msgstr ""
140
 
141
+ #: classes/ad_type_image.php:64 classes/ad_type_dummy.php:45
142
+ msgid "URL"
 
 
 
143
  msgstr ""
144
 
145
+ #: classes/ad_type_image.php:68
146
+ msgid "Link to target site including http(s)"
147
+ msgstr ""
148
+
149
+ #. $s is a size string like "728 x 90".
150
+ #. This string shows up on the ad edit page of
151
+ #. image ads if the size entered for the ad is
152
+ #. different from the size of the uploaded image.
153
+ #: classes/ad_type_image.php:214
154
  #, php-format
155
+ msgid "Original size: %s"
156
  msgstr ""
157
 
158
  #: classes/ad_ajax_callbacks.php:236
248
  msgid "headline 4 (%s)"
249
  msgstr ""
250
 
251
+ #: classes/ad_placements.php:761
252
  #, php-format
253
  msgid "Set <em>%s</em> to show more ads"
254
  msgstr ""
255
 
256
+ #: classes/ad_placements.php:762 admin/includes/class-settings.php:160
257
  msgid "Disable level limitation"
258
  msgstr ""
259
 
260
+ #: classes/frontend_checks.php:95
261
+ msgid "Random AdSense ads"
262
  msgstr ""
263
 
264
+ #: classes/frontend_checks.php:109 admin/includes/class-settings.php:514
265
+ msgid "You look like a bot"
 
 
266
  msgstr ""
267
 
268
+ #: classes/frontend_checks.php:123
269
+ msgid "Ad blocker enabled"
270
  msgstr ""
271
 
272
+ #: classes/frontend_checks.php:135
273
+ #, php-format
274
+ msgid "<em>%s</em> filter does not exist"
275
  msgstr ""
276
 
277
+ #: classes/frontend_checks.php:170
278
+ msgid "Ads are disabled on this page"
279
  msgstr ""
280
 
281
+ #: classes/frontend_checks.php:183
282
+ msgid "Ads are disabled in the content of this page"
283
  msgstr ""
284
 
285
+ #: classes/frontend_checks.php:195
286
+ msgid "the current post ID is 0 "
 
 
287
  msgstr ""
288
 
289
+ #: classes/frontend_checks.php:209
290
+ msgid "Ads are disabled on all pages"
291
  msgstr ""
292
 
293
+ #: classes/frontend_checks.php:222
294
+ msgid "Ads are disabled on 404 pages"
295
  msgstr ""
296
 
297
+ #: classes/frontend_checks.php:235
298
+ msgid "Ads are disabled on non singular pages"
299
  msgstr ""
300
 
301
+ #: classes/frontend_checks.php:248 classes/ad-debug.php:272
302
+ #: admin/includes/ad-health-notices.php:144
303
+ msgid ""
304
+ "Your website is using HTTPS, but the ad code contains HTTP and might not "
305
+ "work."
306
  msgstr ""
307
 
308
+ #: classes/frontend_checks.php:249
309
+ #, php-format
310
+ msgid "Ad IDs: %s"
311
  msgstr ""
312
 
313
+ #: classes/frontend_checks.php:261 admin/includes/ad-health-notices.php:120
314
+ #, php-format
315
+ msgid "Visible ads should not use the Header placement: %s"
316
  msgstr ""
317
 
318
+ #: classes/frontend_checks.php:275 admin/includes/ad-health-notices.php:134
319
+ msgid "AdSense violation"
320
  msgstr ""
321
 
322
+ #: classes/frontend_checks.php:276 admin/includes/ad-health-notices.php:135
323
+ msgid "Ad is hidden"
324
  msgstr ""
325
 
326
+ #: classes/frontend_checks.php:277
 
 
 
 
327
  #, php-format
328
+ msgid "IDs: %s"
329
  msgstr ""
330
 
331
+ #: classes/frontend_checks.php:290
332
+ #, php-format
333
+ msgid "The following responsive AdSense ads are not showing up: %s"
334
  msgstr ""
335
 
336
+ #: classes/frontend_checks.php:304
337
+ msgid "Consent not given"
 
 
338
  msgstr ""
339
 
340
+ #: classes/frontend_checks.php:316
341
+ msgid "Debug Google Ad Manager"
342
  msgstr ""
343
 
344
+ #: classes/frontend_checks.php:327
345
+ msgid "Auto ads code found"
346
  msgstr ""
347
 
348
+ #: classes/frontend_checks.php:339
349
+ msgid "highlight ads"
350
  msgstr ""
351
 
352
+ #: classes/frontend_checks.php:406
353
+ msgid "Ad Health"
354
  msgstr ""
355
 
356
+ #: classes/frontend_checks.php:420
357
+ #, php-format
358
+ msgid "Show %d more notifications"
359
  msgstr ""
360
 
361
+ #: classes/frontend_checks.php:437
362
+ msgid "Everything is fine"
363
  msgstr ""
364
 
365
+ #: classes/frontend_checks.php:448 admin/includes/class-ad-type.php:837
366
+ msgid "Get help"
367
  msgstr ""
368
 
369
+ #: classes/frontend_checks.php:505
370
+ msgid ""
371
+ "the following code is used for automatic error detection and only visible to "
372
+ "admins"
373
  msgstr ""
374
 
375
+ #: classes/frontend_checks.php:815 classes/frontend_checks.php:827
376
+ #, php-format
377
+ msgid "Hi %s"
378
  msgstr ""
379
 
380
+ #: classes/frontend_checks.php:815
381
+ #, php-format
382
+ msgid "Advanced Ads detected AdSense Auto ads (%sx) on this page."
383
  msgstr ""
384
 
385
+ #: classes/frontend_checks.php:815 classes/frontend_checks.php:827
386
+ msgid "Is that correct?"
387
  msgstr ""
388
 
389
+ #: classes/frontend_checks.php:817
390
+ msgid "All is fine"
 
 
391
  msgstr ""
392
 
393
+ #: classes/frontend_checks.php:818
394
+ msgid "Something is off"
395
  msgstr ""
396
 
397
+ #: classes/frontend_checks.php:820
398
+ msgid ""
399
+ "This is a one-time check from your friendly Advanced Ads plugin. It is only "
400
+ "visible to you."
401
  msgstr ""
402
 
403
+ #: classes/frontend_checks.php:827
404
+ msgid ""
405
+ "Advanced Ads detected the AdSense Auto ads code and <strong>no ads on this "
406
+ "page</strong>."
407
  msgstr ""
408
 
409
+ #: classes/frontend_checks.php:829
410
+ msgid "This is fine"
411
+ msgstr ""
412
+
413
+ #: classes/frontend_checks.php:830
414
+ msgid "I expected something else"
415
+ msgstr ""
416
+
417
+ #: classes/frontend_checks.php:832
418
+ msgid ""
419
+ "PS: this is a one-time check from your friendly Advanced Ads plugin. It is "
420
+ "only visible to you."
421
+ msgstr ""
422
+
423
+ #: classes/frontend_checks.php:835 classes/frontend_checks.php:843
424
+ msgid "Just click on your problem to learn more from our knowledge base."
425
+ msgstr ""
426
+
427
+ #: classes/frontend_checks.php:836
428
+ msgid "I want to disable AdSense Auto ads"
429
+ msgstr ""
430
+
431
+ #: classes/frontend_checks.php:837 classes/frontend_checks.php:844
432
+ msgid "I don’t see any Auto ads"
433
+ msgstr ""
434
+
435
+ #: classes/frontend_checks.php:838
436
+ msgid "I only see blank space"
437
+ msgstr ""
438
+
439
+ #: classes/frontend_checks.php:839
440
+ msgid "I want to change the position of the ads"
441
+ msgstr ""
442
+
443
+ #: classes/frontend_checks.php:840
444
+ #: modules/gadsense/includes/class-network-adsense.php:202
445
+ msgid "Display Auto ads only on specific pages"
446
+ msgstr ""
447
+
448
+ #: classes/frontend_checks.php:845
449
+ msgid "How to look for the Auto ads code"
450
+ msgstr ""
451
+
452
+ #: classes/frontend_checks.php:846
453
+ msgid "I have another question or problem"
454
+ msgstr ""
455
+
456
+ #: classes/frontend_checks.php:849
457
+ msgid "Closing the message"
458
+ msgstr ""
459
+
460
+ #: classes/ad_type_group.php:30 admin/views/ad-group-list-header.php:15
461
+ msgid "Ad Group"
462
+ msgstr ""
463
+
464
+ #: classes/ad_type_group.php:31
465
+ msgid ""
466
+ "Choose an existing ad group. Use this type when you want to assign the same "
467
+ "display and visitor conditions to all ads in that group."
468
+ msgstr ""
469
+
470
+ #: classes/ad_type_group.php:85
471
+ msgid "ad group"
472
+ msgstr ""
473
+
474
+ #: classes/visitor-conditions.php:40
475
+ msgid "device"
476
+ msgstr ""
477
+
478
+ #: classes/visitor-conditions.php:41
479
+ msgid "Display ads only on mobile devices or hide them."
480
+ msgstr ""
481
+
482
+ #: classes/visitor-conditions.php:47
483
+ msgid "logged-in visitor"
484
+ msgstr ""
485
+
486
+ #: classes/visitor-conditions.php:48
487
+ msgid "Whether the visitor has to be logged in or not in order to see the ads."
488
+ msgstr ""
489
+
490
+ #: classes/visitor-conditions.php:116
491
+ #, php-format
492
+ msgid ""
493
+ "Display ads by the available space on the device or target tablets with the "
494
+ "<a href=\"%s\" target=\"_blank\">Responsive add-on</a>"
495
+ msgstr ""
496
+
497
+ #: classes/visitor-conditions.php:257
498
+ msgid "browser language"
499
+ msgstr ""
500
+
501
+ #: classes/visitor-conditions.php:258
502
+ msgid "cookie"
503
+ msgstr ""
504
+
505
+ #: classes/visitor-conditions.php:259
506
+ msgid "max. ad clicks"
507
+ msgstr ""
508
+
509
+ #: classes/visitor-conditions.php:260
510
+ msgid "max. ad impressions"
511
+ msgstr ""
512
+
513
+ #: classes/visitor-conditions.php:261
514
+ msgid "new visitor"
515
+ msgstr ""
516
+
517
+ #: classes/visitor-conditions.php:262
518
+ msgid "page impressions"
519
+ msgstr ""
520
+
521
+ #: classes/visitor-conditions.php:263
522
+ msgid "referrer url"
523
+ msgstr ""
524
+
525
+ #: classes/visitor-conditions.php:264
526
+ msgid "user agent"
527
+ msgstr ""
528
+
529
+ #: classes/visitor-conditions.php:265
530
+ msgid "user can (capabilities)"
531
+ msgstr ""
532
+
533
+ #: classes/visitor-conditions.php:266
534
+ msgid "user role"
535
+ msgstr ""
536
+
537
+ #: classes/visitor-conditions.php:269
538
+ msgid "geo location"
539
+ msgstr ""
540
+
541
+ #: classes/visitor-conditions.php:272
542
+ msgid "browser width"
543
+ msgstr ""
544
+
545
+ #: classes/visitor-conditions.php:298 classes/display-conditions.php:282
546
+ #: admin/class-advanced-ads-admin.php:232
547
+ #: modules/gadsense/admin/views/external-ads-links.php:17
548
+ #: modules/gadsense/admin/views/external-ads-links.php:22
549
+ #: modules/gadsense/admin/views/external-ads-links.php:29
550
+ msgid "or"
551
+ msgstr ""
552
+
553
+ #: classes/visitor-conditions.php:298 classes/display-conditions.php:282
554
+ #: admin/class-advanced-ads-admin.php:233
555
+ msgid "and"
556
+ msgstr ""
557
+
558
+ #: classes/ad_type_content.php:35
559
+ msgid "Rich Content"
560
+ msgstr ""
561
+
562
+ #: classes/ad_type_content.php:36
563
+ msgid ""
564
+ "The full content editor from WordPress with all features like shortcodes, "
565
+ "image upload or styling, but also simple text/html mode for scripts and code."
566
+ msgstr ""
567
+
568
+ #: classes/display-conditions.php:88
569
+ msgid "post type"
570
+ msgstr ""
571
+
572
+ #: classes/display-conditions.php:89 includes/array_ad_conditions.php:40
573
+ msgid "Choose the public post types on which to display the ad."
574
+ msgstr ""
575
+
576
+ #: classes/display-conditions.php:96
577
+ msgid "specific pages"
578
+ msgstr ""
579
+
580
+ #: classes/display-conditions.php:97 includes/array_ad_conditions.php:58
581
+ msgid ""
582
+ "Choose on which individual posts, pages and public post type pages you want "
583
+ "to display or hide ads."
584
+ msgstr ""
585
+
586
+ #: classes/display-conditions.php:103
587
+ msgid "general conditions"
588
+ msgstr ""
589
+
590
+ #: classes/display-conditions.php:110
591
+ msgid "author"
592
+ msgstr ""
593
+
594
+ #: classes/display-conditions.php:117
595
+ msgid "content age"
596
+ msgstr ""
597
+
598
+ #: classes/display-conditions.php:118
599
  msgid "Display ads based on age of the page."
600
  msgstr ""
601
 
721
  msgid "days"
722
  msgstr ""
723
 
724
+ #: classes/ad-debug.php:32
725
+ msgid "The ad is displayed on the page"
 
 
726
  msgstr ""
727
 
728
+ #: classes/ad-debug.php:34
729
+ msgid "The ad is not displayed on the page"
 
 
 
730
  msgstr ""
731
 
732
+ #: classes/ad-debug.php:39
733
+ msgid "Current query is not identical to main query."
734
  msgstr ""
735
 
736
+ #: classes/ad-debug.php:45
737
+ msgid "current post"
738
  msgstr ""
739
 
740
+ #: classes/ad-debug.php:49
741
+ msgid "Current post is not identical to main post."
742
  msgstr ""
743
 
744
+ #: classes/ad-debug.php:51
745
+ msgid "main post"
746
  msgstr ""
747
 
748
+ #: classes/ad-debug.php:98
749
+ msgid "current query"
750
  msgstr ""
751
 
752
+ #: classes/ad-debug.php:98
753
+ msgid "main query"
754
  msgstr ""
755
 
756
+ #: classes/ad-debug.php:118 classes/ad-debug.php:167 classes/ad-debug.php:169
757
+ #: public/class-advanced-ads.php:739 admin/views/ad-group-list-ads.php:13
758
+ msgid "Ad"
759
  msgstr ""
760
 
761
+ #: classes/ad-debug.php:121 public/class-advanced-ads.php:702
762
+ msgctxt "ad group singular name"
763
+ msgid "Ad Group"
764
  msgstr ""
765
 
766
+ #: classes/ad-debug.php:128
767
+ msgid "Placement"
768
  msgstr ""
769
 
770
+ #: classes/ad-debug.php:152 admin/includes/class-meta-box.php:79
771
+ msgid "Display Conditions"
772
  msgstr ""
773
 
774
+ #: classes/ad-debug.php:239 admin/includes/class-meta-box.php:82
775
+ msgid "Visitor Conditions"
 
776
  msgstr ""
777
 
778
+ #: classes/widget.php:22
779
+ msgid "Display Ads and Ad Groups."
780
  msgstr ""
781
 
782
+ #: classes/widget.php:70
783
+ msgid "Title:"
784
  msgstr ""
785
 
786
+ #: classes/widget.php:76 admin/includes/class-shortcode-creator.php:82
787
+ #: modules/gutenberg/includes/class-gutenberg.php:77
788
+ msgid "--empty--"
789
  msgstr ""
790
 
791
+ #: classes/widget.php:78 admin/includes/class-menu.php:95
792
+ #: admin/includes/class-shortcode-creator.php:98 admin/views/placements.php:36
793
+ #: modules/gutenberg/includes/class-gutenberg.php:81
794
+ #: modules/import-export/views/page.php:25
795
+ msgid "Placements"
796
  msgstr ""
797
 
798
+ #: classes/widget.php:85 admin/includes/class-shortcode-creator.php:91
799
+ #: admin/views/placements-item.php:4 admin/views/placement-form.php:45
800
+ #: modules/gutenberg/includes/class-gutenberg.php:80
801
+ msgid "Ad Groups"
802
  msgstr ""
803
 
804
+ #: classes/widget.php:92 public/class-advanced-ads.php:738
805
+ #: admin/includes/class-menu.php:68 admin/includes/class-menu.php:68
806
+ #: admin/includes/class-shortcode-creator.php:84
807
+ #: admin/views/placements-item.php:16 admin/views/ad-group-list-form-row.php:90
808
+ #: admin/views/placement-form.php:52 admin/views/ad-group-list-header.php:17
809
+ #: modules/gutenberg/includes/class-gutenberg.php:79
810
+ #: modules/import-export/views/page.php:23
811
+ msgid "Ads"
812
  msgstr ""
813
 
814
+ #: classes/ad_type_dummy.php:26
815
+ msgid "Dummy"
 
816
  msgstr ""
817
 
818
+ #: classes/ad_type_dummy.php:27
819
+ msgid "Uses a simple placeholder ad for quick testing."
 
820
  msgstr ""
821
 
822
+ #: includes/array_ad_conditions.php:39
823
+ msgid "Post Types"
824
  msgstr ""
825
 
826
+ #: includes/array_ad_conditions.php:45
827
+ msgid "Categories, Tags and Taxonomies"
828
  msgstr ""
829
 
830
+ #: includes/array_ad_conditions.php:46
831
+ msgid ""
832
+ "Choose terms from public category, tag and other taxonomies a post must "
833
+ "belong to in order to have ads."
834
  msgstr ""
835
 
836
+ #: includes/array_ad_conditions.php:51
837
+ msgid "Category Archives"
 
838
  msgstr ""
839
 
840
+ #: includes/array_ad_conditions.php:52
841
+ msgid "comma seperated IDs of category archives"
842
  msgstr ""
843
 
844
+ #: includes/array_ad_conditions.php:57
845
+ msgid "Individual Posts, Pages and Public Post Types"
846
  msgstr ""
847
 
848
+ #: admin/class-advanced-ads-admin.php:234
849
+ msgid "After which paragraph?"
850
  msgstr ""
851
 
852
+ #: admin/class-advanced-ads-admin.php:236
853
+ msgid "Today"
854
  msgstr ""
855
 
856
+ #: admin/class-advanced-ads-admin.php:237
857
+ msgid "Yesterday"
858
  msgstr ""
859
 
860
+ #: admin/class-advanced-ads-admin.php:238
861
+ msgid "This Month"
 
862
  msgstr ""
863
 
864
+ #. 1: The number of days.
865
+ #: admin/class-advanced-ads-admin.php:240
866
+ #, php-format
867
+ msgid "Last %1$d days"
868
  msgstr ""
869
 
870
+ #: admin/class-advanced-ads-admin.php:243
871
+ msgid "All"
872
  msgstr ""
873
 
874
+ #: admin/class-advanced-ads-admin.php:244
875
  msgid ""
876
+ "There were no results returned for this ad. Please make sure it is active, "
877
+ "generating impressions and double check your ad parameters."
 
 
 
 
878
  msgstr ""
879
 
880
+ #: admin/class-advanced-ads-admin.php:245
881
+ #: modules/gadsense/admin/views/external-ads-list.php:33
882
+ msgid "Show inactive ads"
883
  msgstr ""
884
 
885
+ #: admin/class-advanced-ads-admin.php:246
886
+ msgid "Hide inactive ads"
887
  msgstr ""
888
 
889
+ #: admin/class-advanced-ads-admin.php:248
890
+ msgid "There has been an AJAX error caused by another plugin."
891
  msgstr ""
892
 
893
+ #. %1$s is an opening link tag, %2$s is a closing one.
894
+ #: admin/class-advanced-ads-admin.php:251
895
  #, php-format
896
+ msgid "Please contact our %1$ssupport%2$s."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
897
  msgstr ""
898
 
899
+ #: admin/class-advanced-ads-admin.php:364
900
+ #, php-format
901
+ msgid "time of %s"
 
 
 
 
 
 
902
  msgstr ""
903
 
904
+ #: admin/class-advanced-ads-admin.php:438 admin/includes/class-menu.php:113
905
+ #: admin/includes/class-menu.php:116 admin/views/settings.php:28
906
+ msgid "Support"
907
  msgstr ""
908
 
909
+ #: admin/class-advanced-ads-admin.php:442
910
+ #: admin/includes/class-overview-widgets.php:58
911
+ msgid "Add-Ons"
912
  msgstr ""
913
 
914
+ #: admin/class-advanced-ads-admin.php:711
915
+ #: admin/includes/class-overview-widgets.php:181
916
+ #, php-format
917
  msgid ""
918
+ "Thank the developer with a &#9733;&#9733;&#9733;&#9733;&#9733; review on <a "
919
+ "href=\"%s\" target=\"_blank\">wordpress.org</a>"
 
 
 
 
 
 
 
 
 
 
 
 
920
  msgstr ""
921
 
922
  #: public/class-advanced-ads.php:377
1031
  "recommended. Please ask your hosting provider for more information."
1032
  msgstr ""
1033
 
1034
+ #: admin/includes/ad-health-notices.php:42
 
 
 
 
 
 
 
 
 
1035
  #, php-format
1036
  msgid ""
1037
  "Plugins that are known to cause (partial) problems: <strong>%1$s</strong>. "
1038
  "<a href=\"%2$s\" target=\"_blank\">Learn more</a>."
1039
  msgstr ""
1040
 
1041
+ #: admin/includes/ad-health-notices.php:53 admin/views/placements.php:140
1042
  #, php-format
1043
  msgid ""
1044
  "Missing PHP extensions could cause issues. Please ask your hosting provider "
1045
  "to enable them: %s"
1046
  msgstr ""
1047
 
1048
+ #: admin/includes/ad-health-notices.php:63
1049
  #, php-format
1050
  msgid ""
1051
  "Ads are disabled for all or some pages. See \"disabled ads\" in <a "
1052
  "href=\"%s\">settings</a>."
1053
  msgstr ""
1054
 
1055
+ #: admin/includes/ad-health-notices.php:71 admin/views/support.php:25
1056
  msgid "Advanced Ads related constants enabled"
1057
  msgstr ""
1058
 
1059
+ #: admin/includes/ad-health-notices.php:79
1060
  #, php-format
1061
  msgid ""
1062
  "Possible conflict between jQueryUI library, used by Advanced Ads and other "
1064
  "to misfortunate formats in forms, but should not damage features."
1065
  msgstr ""
1066
 
1067
+ #: admin/includes/ad-health-notices.php:89
1068
  #, php-format
1069
  msgid ""
1070
  "Some assets were changed. Please <strong>rebuild the asset folder</strong> "
1072
  "disguise."
1073
  msgstr ""
1074
 
1075
+ #: admin/includes/ad-health-notices.php:98 admin/includes/notices.php:36
1076
  msgid ""
1077
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
1078
  "missing</strong>."
1079
  msgstr ""
1080
 
1081
+ #: admin/includes/ad-health-notices.php:101 admin/includes/notices.php:36
1082
  #, php-format
1083
  msgid "Please add valid license keys <a href=\"%s\">here</a>."
1084
  msgstr ""
1085
 
1086
+ #: admin/includes/ad-health-notices.php:110
1087
  msgid "Ad expired"
1088
  msgstr ""
1089
 
1090
+ #: admin/includes/ad-health-notices.php:157
1091
+ #: admin/includes/ad-health-notices.php:164
1092
+ #: modules/gadsense/includes/class-mapi.php:89
1093
  msgid "Last AdSense account connection attempt failed."
1094
  msgstr ""
1095
 
1096
  #. %1$s is the opening a tag and %2$s the closing one.
1097
+ #: admin/includes/ad-health-notices.php:166
1098
  #, php-format
1099
  msgid "Create a new AdSense account %1$shere%2$s."
1100
  msgstr ""
1101
 
1102
+ #: admin/includes/ad-health-notices.php:176
1103
+ #: admin/includes/ad-health-notices.php:186
1104
+ #: admin/includes/ad-health-notices.php:196
1105
  msgid ""
1106
  "One of your sites is missing the AdSense publisher ID in the ads.txt file."
1107
  msgstr ""
1108
 
1109
+ #: admin/includes/ad-health-notices.php:178
1110
+ #: admin/includes/ad-health-notices.php:188
1111
+ #: admin/includes/ad-health-notices.php:198
1112
  msgctxt "related to ads.txt file"
1113
  msgid "Create one now."
1114
  msgstr ""
1115
 
1116
  #. %s is a filter hook, here `the_content`
1117
+ #: admin/includes/ad-health-notices.php:206
1118
  #, php-format
1119
  msgid "<strong>%s</strong> filter found multiple times."
1120
  msgstr ""
1121
 
1122
+ #: admin/includes/ad-health-notices.php:208
1123
  msgid "Advanced Ads uses the outermost of them."
1124
  msgstr ""
1125
 
1126
  #. %1$s is a plugin name, %2$s is the opening a tag and %3$s the closing one.
1127
+ #: admin/includes/ad-health-notices.php:217
1128
+ #: admin/includes/ad-health-notices.php:228
1129
+ #: admin/includes/ad-health-notices.php:239
1130
+ #: admin/includes/ad-health-notices.php:252
1131
  #, php-format
1132
  msgid "Learn how to integrate %1$s with Advanced Ads %2$shere%3$s."
1133
  msgstr ""
1134
 
1135
  #. %s is a service or plugin name.
1136
+ #: admin/includes/ad-health-notices.php:266
1137
  #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:196
1138
  #, php-format
1139
  msgid "%s detected."
1140
  msgstr ""
1141
 
1142
+ #: admin/includes/ad-health-notices.php:267
1143
  msgid "Learn how this might impact your ad setup."
1144
  msgstr ""
1145
 
1146
+ #: admin/includes/ad-health-notices.php:278
1147
  #, php-format
1148
  msgid ""
1149
  "Advanced Ads handles your ads.txt file automatically. You might be able to "
1150
  "<strong>remove %1$s</strong>."
1151
  msgstr ""
1152
 
1153
+ #: admin/includes/ad-health-notices.php:289
1154
  msgid "Advanced Ads handles header and footer codes."
1155
  msgstr ""
1156
 
1157
+ #: admin/includes/ad-health-notices.php:290
1158
  #, php-format
1159
  msgid "You might be able to <strong>remove %1$s</strong>."
1160
  msgstr ""
1161
 
1162
+ #: admin/includes/ad-health-notices.php:293
1163
  msgid "Learn how."
1164
  msgstr ""
1165
 
1166
+ #: admin/includes/class-ad-type.php:242 admin/includes/class-ad-type.php:248
1167
+ msgid "Ad Details"
1168
  msgstr ""
1169
 
1170
+ #: admin/includes/class-ad-type.php:243 admin/includes/class-ad-type.php:249
1171
+ msgid "Ad Planning"
 
 
1172
  msgstr ""
1173
 
1174
+ #: admin/includes/class-ad-type.php:244 admin/includes/class-ad-type.php:250
1175
+ msgid "Ad Shortcode"
 
 
1176
  msgstr ""
1177
 
1178
+ #: admin/includes/class-ad-type.php:410
 
1179
  #, php-format
1180
+ msgid "%s ad updated."
1181
+ msgid_plural "%s ads updated."
1182
+ msgstr[0] ""
1183
+ msgstr[1] ""
1184
 
1185
+ #: admin/includes/class-ad-type.php:412
1186
  #, php-format
1187
+ msgid "%s ad not updated, somebody is editing it."
1188
+ msgid_plural "%s ads not updated, somebody is editing them."
1189
+ msgstr[0] ""
1190
+ msgstr[1] ""
1191
 
1192
+ #: admin/includes/class-ad-type.php:414
1193
+ #, php-format
1194
+ msgid "%s ad permanently deleted."
1195
+ msgid_plural "%s ads permanently deleted."
1196
+ msgstr[0] ""
1197
+ msgstr[1] ""
1198
 
1199
+ #: admin/includes/class-ad-type.php:416
1200
  #, php-format
1201
+ msgid "%s ad moved to the Trash."
1202
+ msgid_plural "%s ads moved to the Trash."
1203
+ msgstr[0] ""
1204
+ msgstr[1] ""
1205
 
1206
+ #: admin/includes/class-ad-type.php:418
1207
+ #, php-format
1208
+ msgid "%s ad restored from the Trash."
1209
+ msgid_plural "%s ads restored from the Trash."
1210
+ msgstr[0] ""
1211
+ msgstr[1] ""
1212
+
1213
+ #: admin/includes/class-ad-type.php:768 admin/includes/class-ad-type.php:769
1214
+ msgid "Ad updated."
1215
  msgstr ""
1216
 
1217
+ #. translators: %s: date and time of the revision
1218
+ #: admin/includes/class-ad-type.php:770
1219
+ #, php-format
1220
+ msgid "Ad restored to revision from %s"
1221
  msgstr ""
1222
 
1223
+ #: admin/includes/class-ad-type.php:771 admin/includes/class-ad-type.php:772
1224
+ msgid "Ad saved."
1225
  msgstr ""
1226
 
1227
+ #: admin/includes/class-ad-type.php:773
1228
+ msgid "Ad submitted."
1229
  msgstr ""
1230
 
1231
+ #: admin/includes/class-ad-type.php:776
1232
+ #, php-format
1233
+ msgid "Ad scheduled for: <strong>%1$s</strong>."
1234
  msgstr ""
1235
 
1236
+ #. translators: Publish box date format, see http://php.net/date
1237
+ #: admin/includes/class-ad-type.php:778
1238
+ msgid "M j, Y @ G:i"
1239
  msgstr ""
1240
 
1241
+ #: admin/includes/class-ad-type.php:780
1242
+ msgid "Ad draft updated."
1243
  msgstr ""
1244
 
1245
+ #: admin/includes/class-ad-type.php:836
1246
+ msgid ""
1247
+ "You don’t have access to ads. Please deactivate and re-enable Advanced Ads "
1248
+ "again to fix this."
1249
  msgstr ""
1250
 
1251
+ #: admin/includes/notices.php:15
1252
+ msgid ""
1253
+ "Thank you for activating <strong>Advanced Ads</strong>. Would you like to "
1254
+ "receive the first steps via email?"
1255
  msgstr ""
1256
 
1257
+ #: admin/includes/notices.php:16
1258
+ msgid "Yes, send it"
 
1259
  msgstr ""
1260
 
1261
+ #: admin/includes/notices.php:22
1262
+ msgid ""
1263
+ "Thank you for using <strong>Advanced Ads</strong>. Stay informed and receive "
1264
+ "<strong>2 free add-ons</strong> for joining the newsletter."
1265
  msgstr ""
1266
 
1267
+ #: admin/includes/notices.php:23
1268
+ msgid "Add me now"
1269
  msgstr ""
1270
 
1271
+ #: admin/includes/notices.php:29
1272
+ msgid ""
1273
+ "Learn more about how and <strong>how much you can earn with AdSense</strong> "
1274
+ "and Advanced Ads from my dedicated newsletter."
1275
  msgstr ""
1276
 
1277
+ #: admin/includes/notices.php:30 admin/views/notices/subscribe.php:3
1278
+ #: admin/views/notices/inline.php:3
1279
+ msgid "Subscribe me now"
1280
  msgstr ""
1281
 
1282
+ #: admin/includes/notices.php:44
1283
+ msgid "… ads created using <strong>Advanced Ads</strong>."
1284
+ msgstr ""
 
 
 
1285
 
1286
+ #: admin/includes/notices.php:45
1287
+ msgid ""
1288
+ "Do you find the plugin useful and would like to thank us for updates, fixing "
1289
+ "bugs and improving your ad setup?"
1290
+ msgstr ""
 
1291
 
1292
+ #. this belongs to our message asking the user for a review. You can find a nice equivalent in your own language
1293
+ #: admin/includes/notices.php:48
1294
+ msgid "When you give 5-stars, an actual person does a little happy dance!"
1295
+ msgstr ""
 
 
1296
 
1297
+ #: admin/includes/notices.php:50
1298
+ msgid "Sure, I appreciate your work"
1299
+ msgstr ""
1300
+
1301
+ #: admin/includes/notices.php:51
1302
+ msgid "Yes, but help me first to solve a problem, please"
1303
+ msgstr ""
1304
 
1305
+ #. %s is a link. `30%%` is correct, please use exactly that value so that it shows "30%".
1306
+ #: admin/includes/notices.php:60
1307
  #, php-format
1308
+ msgid ""
1309
+ "Our Black Friday / Cyber Monday Offer: <span style=\"font-weight: bold; font-"
1310
+ "size: 1.4em; color: green;\">-30%%</span> on all add-ons and All Access.<a "
1311
+ "class=\"button button-primary\" target=\"_blank\" href=\"%s\">Get All "
1312
+ "Access</a>"
1313
+ msgstr ""
1314
 
1315
+ #: admin/includes/class-list-filters.php:143
1316
+ #: modules/gadsense/admin/admin.php:25
1317
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:109
1318
+ msgid "Responsive"
1319
  msgstr ""
1320
 
1321
+ #: admin/includes/class-list-filters.php:152
1322
+ msgid "expired"
 
 
1323
  msgstr ""
1324
 
1325
+ #: admin/includes/class-list-filters.php:156
1326
+ msgid "any expiry date"
1327
  msgstr ""
1328
 
1329
+ #: admin/includes/class-meta-box.php:55
1330
+ msgid "Ad Type"
1331
+ msgstr ""
1332
+
1333
+ #: admin/includes/class-meta-box.php:64
1334
+ #: admin/includes/class-overview-widgets.php:53
1335
+ msgid "AdSense Earnings"
1336
+ msgstr ""
1337
+
1338
+ #: admin/includes/class-meta-box.php:73
1339
+ msgid "Ad Parameters"
1340
+ msgstr ""
1341
+
1342
+ #: admin/includes/class-meta-box.php:76 admin/includes/class-settings.php:66
1343
+ msgid "Layout / Output"
1344
+ msgstr ""
1345
+
1346
+ #: admin/includes/class-meta-box.php:86
1347
+ msgid "Increase your ad revenue"
1348
+ msgstr ""
1349
+
1350
+ #: admin/includes/class-meta-box.php:91
1351
+ msgid "Ad Stats"
1352
+ msgstr ""
1353
+
1354
+ #: admin/includes/class-meta-box.php:153 admin/includes/class-meta-box.php:164
1355
+ #: admin/includes/class-meta-box.php:169 admin/includes/class-settings.php:607
1356
+ #: admin/views/ad-output-metabox.php:82
1357
+ #: modules/privacy/admin/views/setting-enable.php:2
1358
+ #: modules/ads-txt/admin/views/setting-create.php:11
1359
+ msgid "Manual"
1360
+ msgstr ""
1361
+
1362
+ #: admin/includes/class-meta-box.php:163
1363
+ msgid "Video"
1364
+ msgstr ""
1365
+
1366
+ #: admin/includes/class-meta-box.php:198
1367
+ #: admin/includes/class-overview-widgets.php:51
1368
+ msgid "Disable"
1369
+ msgstr ""
1370
+
1371
+ #: admin/includes/class-meta-box.php:311
1372
+ msgid "Ad Settings"
1373
+ msgstr ""
1374
+
1375
+ #: admin/includes/class-meta-box.php:413 admin/views/overview.php:6
1376
+ msgid "Ads Dashboard"
1377
  msgstr ""
1378
 
1379
+ #: admin/includes/class-meta-box.php:424
1380
  #, php-format
1381
+ msgid "%d ads <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
1382
  msgstr ""
1383
 
1384
+ #: admin/includes/class-meta-box.php:435
1385
+ msgid "Get the tutorial via email"
 
1386
  msgstr ""
1387
 
1388
+ #: admin/includes/class-meta-box.php:442
1389
+ msgid "Get AdSense tips via email"
1390
  msgstr ""
1391
 
1392
+ #: admin/includes/class-meta-box.php:449
1393
+ msgid "Visit our blog for more articles about ad optimization"
1394
+ msgstr ""
1395
+
1396
+ #. %s is our URL
1397
+ #: admin/includes/class-meta-box.php:502
1398
+ msgid "Latest posts on wpadvancedads.com"
1399
  msgstr ""
1400
 
1401
  #: admin/includes/class-licenses.php:90
1442
  msgstr ""
1443
 
1444
  #. %s is a list of server information like IP address. Just keep it as is.
1445
+ #: admin/includes/class-licenses.php:248
1446
  #, php-format
1447
  msgid ""
1448
  "Your request was blocked by our firewall. Please send us the following "
1449
  "information to unblock you: %s."
1450
  msgstr ""
1451
 
1452
+ #: admin/includes/class-licenses.php:312
1453
  msgid "Error while trying to disable the license. Please contact support."
1454
  msgstr ""
1455
 
1456
+ #: admin/includes/class-licenses.php:347 admin/includes/class-licenses.php:370
1457
  msgid "License couldn’t be deactivated. Please try again later."
1458
  msgstr ""
1459
 
1460
+ #: admin/includes/class-licenses.php:596
1461
  #, php-format
1462
  msgid "Download failed. <a href=\"%s\">Click here to try another method</a>."
1463
  msgstr ""
1464
 
1465
+ #: admin/includes/class-licenses.php:598
1466
  #, php-format
1467
  msgid ""
1468
  "Download failed. <a href=\"%s\" target=\"_blank\">Click here to learn why</a>"
1469
  "."
1470
  msgstr ""
1471
 
1472
+ #: admin/includes/shortcode-creator-l10n.php:10
1473
+ msgctxt "shortcode creator"
1474
+ msgid "Add an ad"
 
1475
  msgstr ""
1476
 
1477
+ #: admin/includes/shortcode-creator-l10n.php:11
1478
+ msgctxt "shortcode creator"
1479
+ msgid "Add shortcode"
1480
  msgstr ""
1481
 
1482
+ #: admin/includes/shortcode-creator-l10n.php:12
1483
+ msgctxt "shortcode creator"
1484
+ msgid "Cancel"
1485
+ msgstr ""
1486
+
1487
+ #: admin/includes/class-notices.php:466
1488
+ #, php-format
1489
+ msgid ""
1490
+ "You don’t seem to have an email address. Please use <a href=\"%s\" "
1491
+ "target=\"_blank\">this form</a> to sign up."
1492
+ msgstr ""
1493
+
1494
+ #: admin/includes/class-notices.php:485
1495
+ msgid ""
1496
+ "How embarrassing. The email server seems to be down. Please try again later."
1497
+ msgstr ""
1498
+
1499
+ #: admin/includes/class-notices.php:492
1500
+ #, php-format
1501
+ msgid ""
1502
+ "Please check your email (%s) for the confirmation message. If you didn’t "
1503
+ "receive one or want to use another email address then please use <a "
1504
+ "href=\"%s\" target=\"_blank\">this form</a> to sign up."
1505
  msgstr ""
1506
 
1507
  #: admin/includes/class-menu.php:58 admin/includes/class-menu.php:74
1544
  "deleted?"
1545
  msgstr ""
1546
 
1547
+ #: admin/includes/class-settings.php:50
1548
+ msgid "Admin"
1549
  msgstr ""
1550
 
1551
+ #: admin/includes/class-settings.php:58 admin/includes/class-settings.php:128
1552
+ msgid "Disable ads"
 
1553
  msgstr ""
1554
 
1555
+ #: admin/includes/class-settings.php:74
1556
+ msgid "Content injection"
1557
  msgstr ""
1558
 
1559
+ #: admin/includes/class-settings.php:136
1560
+ msgid "Hide ads for user roles"
1561
  msgstr ""
1562
 
1563
+ #: admin/includes/class-settings.php:144
1564
+ msgid "Unlimited ad injection"
1565
  msgstr ""
1566
 
1567
+ #: admin/includes/class-settings.php:152
1568
+ msgid "Priority of content injection filter"
1569
  msgstr ""
1570
 
1571
+ #: admin/includes/class-settings.php:168
1572
+ msgid "Hide ads from bots"
 
 
 
 
1573
  msgstr ""
1574
 
1575
+ #: admin/includes/class-settings.php:177
1576
+ msgid "Disable ads for post types"
1577
  msgstr ""
1578
 
1579
+ #: admin/includes/class-settings.php:186
1580
+ msgid "Disable Ad Health and other notices"
 
1581
  msgstr ""
1582
 
1583
+ #: admin/includes/class-settings.php:194
1584
+ msgid "ID prefix"
1585
  msgstr ""
1586
 
1587
+ #: admin/includes/class-settings.php:202
1588
+ msgid "Allow editors to manage ads"
1589
  msgstr ""
1590
 
1591
+ #: admin/includes/class-settings.php:210
1592
+ msgid "Ad label"
 
1593
  msgstr ""
1594
 
1595
+ #: admin/includes/class-settings.php:219
1596
+ msgid "Open links in a new window"
1597
  msgstr ""
1598
 
1599
+ #: admin/includes/class-settings.php:227
1600
+ msgid "Use advanced JavaScript"
1601
  msgstr ""
1602
 
1603
+ #: admin/includes/class-settings.php:237
1604
+ msgid "Delete data on uninstall"
1605
  msgstr ""
1606
 
1607
+ #: admin/includes/class-settings.php:247
1608
+ msgid "Disable shortcode button"
 
1609
  msgstr ""
1610
 
1611
+ #: admin/includes/class-settings.php:286
1612
+ msgid "Pro"
1613
+ msgstr ""
1614
+
1615
+ #: admin/includes/class-settings.php:302 admin/views/pitch-tracking.php:2
1616
+ msgid "Tracking"
1617
+ msgstr ""
1618
+
1619
+ #: admin/includes/class-settings.php:350
1620
  #, php-format
1621
  msgid ""
1622
+ "Enter license keys for our powerful <a href=\"%s\" target=\"_blank\">add-"
1623
+ "ons</a>."
1624
  msgstr ""
1625
 
1626
+ #: admin/includes/class-settings.php:351
1627
+ #, php-format
1628
  msgid ""
1629
+ "See also <a href=\"%s\" target=\"_blank\">Issues and questions about "
1630
+ "licenses</a>."
1631
  msgstr ""
1632
 
1633
+ #: admin/includes/class-settings.php:363
1634
+ msgid "Are you missing something?"
1635
+ msgstr ""
1636
+
1637
+ #: admin/includes/class-settings.php:431
1638
+ msgid "Choose the roles a user must have in order to not see any ads."
1639
+ msgstr ""
1640
+
1641
+ #: admin/includes/class-settings.php:445
1642
+ msgid ""
1643
+ "<strong>notice: </strong>the file is currently enabled by an add-on that "
1644
+ "needs it."
1645
+ msgstr ""
1646
+
1647
+ #: admin/includes/class-settings.php:448
1648
  #, php-format
1649
  msgid ""
1650
+ "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">"
1651
+ "here</a>). Some features and add-ons might override this setting if they "
1652
+ "need features from this file."
1653
+ msgstr ""
1654
+
1655
+ #: admin/includes/class-settings.php:468
1656
+ msgid ""
1657
+ "Some plugins and themes trigger ad injections where it shouldn’t happen. "
1658
+ "Therefore, Advanced Ads ignores injected placements on non-singular pages "
1659
+ "and outside the loop. However, this can cause problems with some themes. Set "
1660
+ "this option to -1 in order to enable unlimited ad injection at your own risk,"
1661
+ " set it to 0 to keep it disabled or choose a positive number to enable the "
1662
+ "injection only in the first x posts on your archive pages."
1663
+ msgstr ""
1664
+
1665
+ #: admin/includes/class-settings.php:484
1666
+ msgid ""
1667
+ "Please check your post content. A priority of 10 and below might cause "
1668
+ "issues (wpautop function might run twice)."
1669
+ msgstr ""
1670
+
1671
+ #: admin/includes/class-settings.php:486
1672
+ msgid ""
1673
+ "Play with this value in order to change the priority of the injected ads "
1674
+ "compared to other auto injected elements in the post content."
1675
+ msgstr ""
1676
+
1677
+ #: admin/includes/class-settings.php:500
1678
+ msgid ""
1679
+ "Advanced Ads ignores paragraphs and other elements in containers when "
1680
+ "injecting ads into the post content. Check this option to ignore this "
1681
+ "limitation and ads might show up again."
1682
+ msgstr ""
1683
+
1684
+ #: admin/includes/class-settings.php:516
1685
+ msgid "Read this first"
1686
+ msgstr ""
1687
+
1688
+ #: admin/includes/class-settings.php:517
1689
+ msgid "Hide ads from crawlers, bots and empty user agents."
1690
+ msgstr ""
1691
+
1692
+ #: admin/includes/class-settings.php:530
1693
+ msgid "Pro feature"
1694
+ msgstr ""
1695
+
1696
+ #. %1$s is a starting <a> tag and %2$s a closing one
1697
+ #: admin/includes/class-settings.php:548
1698
+ #, php-format
1699
+ msgid ""
1700
+ "Disable %1$sAd Health%2$s in frontend and backend, warnings and internal "
1701
+ "notices like tips, tutorials, email newsletters and update notices."
1702
+ msgstr ""
1703
+
1704
+ #: admin/includes/class-settings.php:566
1705
+ msgid ""
1706
+ "Prefix of class or id attributes in the frontend. Change it if you don’t "
1707
+ "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
1708
+ "need to <strong>rewrite css rules afterwards</strong>."
1709
+ msgstr ""
1710
+
1711
+ #: admin/includes/class-settings.php:585
1712
+ msgid "Allow editors to also manage and publish ads."
1713
+ msgstr ""
1714
+
1715
+ #: admin/includes/class-settings.php:586
1716
+ #, php-format
1717
+ msgid ""
1718
+ "You can assign different ad-related roles on a user basis with <a "
1719
+ "href=\"%s\" target=\"_blank\">Advanced Ads Pro</a>."
1720
+ msgstr ""
1721
+
1722
+ #: admin/includes/class-settings.php:597
1723
+ msgctxt "label before ads"
1724
+ msgid "Advertisements"
1725
+ msgstr ""
1726
+
1727
+ #: admin/includes/class-settings.php:606
1728
+ msgid "Displayed above ads."
1729
+ msgstr ""
1730
+
1731
+ #: admin/includes/class-settings.php:642
1732
+ msgid "Clean up all data related to Advanced Ads when removing the plugin."
1733
+ msgstr ""
1734
+
1735
+ #: admin/includes/class-settings.php:655
1736
+ msgid "Disable shortcode button in visual editor."
1737
+ msgstr ""
1738
+
1739
+ #: admin/includes/class-ad-groups-list.php:172
1740
+ msgid "Ad weight"
1741
+ msgstr ""
1742
+
1743
+ #: admin/includes/class-ad-groups-list.php:184
1744
+ #: admin/views/ad-list-timing-column.php:4
1745
+ #, php-format
1746
+ msgid "starts %s"
1747
+ msgstr ""
1748
+
1749
+ #: admin/includes/class-ad-groups-list.php:205
1750
+ #: admin/views/ad-list-timing-column.php:28
1751
+ #, php-format
1752
+ msgid "expires %s"
1753
+ msgstr ""
1754
+
1755
+ #: admin/includes/class-ad-groups-list.php:208
1756
+ #: admin/views/ad-list-timing-column.php:30
1757
+ #, php-format
1758
+ msgid "<strong>expired</strong> %s"
1759
+ msgstr ""
1760
+
1761
+ #: admin/includes/class-ad-groups-list.php:225
1762
+ #, php-format
1763
+ msgid "show %d more ads"
1764
+ msgstr ""
1765
+
1766
+ #: admin/includes/class-ad-groups-list.php:229
1767
+ msgid "all published ads are displayed"
1768
+ msgstr ""
1769
+
1770
+ #: admin/includes/class-ad-groups-list.php:232
1771
+ #, php-format
1772
+ msgid "up to %d ads displayed"
1773
+ msgstr ""
1774
+
1775
+ #: admin/includes/class-ad-groups-list.php:235
1776
+ msgid "No ads assigned"
1777
+ msgstr ""
1778
+
1779
+ #: admin/includes/class-ad-groups-list.php:237
1780
+ msgid "Add some"
1781
+ msgstr ""
1782
+
1783
+ #: admin/includes/class-ad-groups-list.php:315
1784
+ msgid "Random ads"
1785
+ msgstr ""
1786
+
1787
+ #: admin/includes/class-ad-groups-list.php:316
1788
+ msgid "Display random ads based on ad weight"
1789
+ msgstr ""
1790
+
1791
+ #: admin/includes/class-ad-groups-list.php:319
1792
+ msgid "Ordered ads"
1793
+ msgstr ""
1794
+
1795
+ #: admin/includes/class-ad-groups-list.php:320
1796
+ msgid "Display ads with the highest ad weight first"
1797
+ msgstr ""
1798
+
1799
+ #: admin/includes/class-ad-groups-list.php:340
1800
+ msgid "Usage"
1801
+ msgstr ""
1802
+
1803
+ #: admin/includes/class-ad-groups-list.php:349
1804
+ msgid "Delete"
1805
+ msgstr ""
1806
+
1807
+ #: admin/includes/class-ad-groups-list.php:371
1808
+ #: admin/includes/class-ad-groups-list.php:441
1809
+ msgid "Invalid Ad Group"
1810
+ msgstr ""
1811
+
1812
+ #: admin/includes/class-ad-groups-list.php:376
1813
+ #: admin/includes/class-ad-groups-list.php:446
1814
+ msgid "You don’t have permission to change the ad groups"
1815
+ msgstr ""
1816
+
1817
+ #: admin/includes/class-ad-groups-list.php:410
1818
+ msgid "No ad group created"
1819
+ msgstr ""
1820
+
1821
+ #: admin/includes/class-shortcode-creator.php:155
1822
+ #, php-format
1823
+ msgid ""
1824
+ "Please, either switch off your ad blocker or disable the shortcode button in "
1825
+ "the <a href=\"%s\" target=\"_blank\">settings</a>."
1826
  msgstr ""
1827
 
1828
  #: admin/includes/class-overview-widgets.php:45
2044
  msgid "Get this add-on"
2045
  msgstr ""
2046
 
2047
+ #: admin/views/gadsense-dashboard.php:29
2048
+ msgid "There is an error in your AdSense setup."
2049
  msgstr ""
2050
 
2051
+ #: admin/views/ad-list-filters.php:18
2052
+ msgid "all ad types"
2053
  msgstr ""
2054
 
2055
+ #: admin/views/ad-list-filters.php:26
2056
+ msgid "all ad sizes"
2057
  msgstr ""
2058
 
2059
+ #: admin/views/ad-list-filters.php:34
2060
+ msgid "all ad dates"
2061
  msgstr ""
2062
 
2063
+ #: admin/views/ad-list-filters.php:42
2064
+ msgid "all ad groups"
2065
  msgstr ""
2066
 
2067
+ #: admin/views/pitch-pro-tab.php:2
2068
+ msgid "Advanced Ads Pro – test and optimize your ad performance"
2069
  msgstr ""
2070
 
2071
+ #: admin/views/pitch-pro-tab.php:4
2072
+ msgid "Ads for Ad Blockers"
2073
  msgstr ""
2074
 
2075
+ #: admin/views/pitch-pro-tab.php:5
2076
+ msgid "Click Fraud Protection"
2077
  msgstr ""
2078
 
2079
+ #: admin/views/pitch-pro-tab.php:6
2080
+ msgid "Lazy Loading"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2081
  msgstr ""
2082
 
2083
+ #: admin/views/pitch-pro-tab.php:13 admin/views/pitch-tracking.php:10
2084
+ msgid "See all features and pricing"
 
2085
  msgstr ""
2086
 
2087
+ #: admin/views/support.php:6
2088
+ msgid ""
2089
+ "Please fix the red highlighted issues on this page or try to understand "
2090
+ "their consequences before contacting support."
2091
  msgstr ""
2092
 
2093
+ #: admin/views/support.php:7
2094
+ msgid "Possible Issues"
2095
  msgstr ""
2096
 
2097
+ #: admin/views/support.php:9
2098
+ msgid "Ads not showing up"
2099
  msgstr ""
2100
 
2101
+ #: admin/views/support.php:10
2102
+ msgid "Purchase & Licenses"
2103
  msgstr ""
2104
 
2105
+ #: admin/views/support.php:11
2106
+ msgid "General Issues"
 
2107
  msgstr ""
2108
 
2109
+ #: admin/views/support.php:12
2110
+ msgid "Issues with Add-Ons"
2111
  msgstr ""
2112
 
2113
+ #: admin/views/support.php:14
 
2114
  msgid ""
2115
+ "Use the following form to search for solutions in the manual on "
2116
+ "wpadvancedads.com"
2117
  msgstr ""
2118
 
2119
+ #: admin/views/support.php:17
2120
+ msgid "search"
 
2121
  msgstr ""
2122
 
2123
+ #: admin/views/support.php:20
2124
  #, php-format
2125
+ msgid ""
2126
+ "Take a look at more common issues or contact us directly through the <a "
2127
+ "href=\"%s\" target=\"_blank\">support page</a>."
 
 
 
 
 
 
2128
  msgstr ""
2129
 
2130
+ #: admin/views/support.php:22
2131
  #, php-format
2132
+ msgid ""
2133
+ "Upgrade to any premium add-on and get <strong>priority email support</strong>"
2134
+ " or reach out through the <a href=\"%s\" target=\"_blank\">support forum</a> "
2135
+ "for individual help."
2136
  msgstr ""
2137
 
2138
+ #: admin/views/settings.php:13
2139
+ msgid "General"
2140
  msgstr ""
2141
 
2142
+ #: admin/views/settings.php:42
2143
+ msgid "Save settings on this page"
2144
  msgstr ""
2145
 
2146
+ #: admin/views/settings.php:49 modules/import-export/main.php:15
2147
+ #: modules/import-export/main.php:15
2148
+ msgid "Import &amp; Export"
 
 
 
2149
  msgstr ""
2150
 
2151
+ #: admin/views/placements-item.php:2 admin/views/placement-form.php:43
2152
+ msgid "--not selected--"
 
 
 
2153
  msgstr ""
2154
 
2155
+ #: admin/views/ad-group-list-ads.php:14
2156
+ msgid "weight"
2157
  msgstr ""
2158
 
2159
+ #: admin/views/ad-group-list-ads.php:37
2160
+ #: admin/views/conditions/conditions-form.php:35
2161
+ msgid "add"
 
2162
  msgstr ""
2163
 
2164
+ #: admin/views/pitch-tracking.php:4
2165
+ msgid "track impressions and click on your ads"
 
2166
  msgstr ""
2167
 
2168
+ #: admin/views/pitch-tracking.php:5
2169
+ msgid "compare ads and periods"
 
2170
  msgstr ""
2171
 
2172
+ #: admin/views/pitch-tracking.php:6
2173
+ msgid "share reports via link or email"
 
2174
  msgstr ""
2175
 
2176
+ #: admin/views/pitch-tracking.php:7
2177
+ msgid "limit ads views by overall number of impressions or clicks"
 
2178
  msgstr ""
2179
 
2180
+ #: admin/views/pitch-tracking.php:8
2181
+ msgid "spread impressions or clicks equally over a given period"
2182
  msgstr ""
2183
 
2184
  #: admin/views/ad-info-top.php:2
2189
  msgid "Stop Wizard"
2190
  msgstr ""
2191
 
2192
+ #: admin/views/ad-info-top.php:26 admin/views/ad-info-bottom.php:20
2193
+ msgid "Stop Wizard and show all options"
 
2194
  msgstr ""
2195
 
2196
+ #: admin/views/settings-disable-ads.php:2
2197
+ msgid "Disable all ads in frontend"
2198
  msgstr ""
2199
 
2200
+ #: admin/views/settings-disable-ads.php:3
 
2201
  msgid ""
2202
+ "Use this option to disable all ads in the frontend, but still be able to use "
2203
+ "the plugin."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2204
  msgstr ""
2205
 
2206
+ #: admin/views/settings-disable-ads.php:8
2207
+ msgid "Disable ads on 404 error pages"
 
 
2208
  msgstr ""
2209
 
2210
+ #: admin/views/settings-disable-ads.php:12
2211
+ msgid "Disable ads on non-singular pages"
 
 
2212
  msgstr ""
2213
 
2214
+ #: admin/views/settings-disable-ads.php:13
2215
  msgid ""
2216
+ "e.g. archive pages like categories, tags, authors, front page (if a list)"
 
 
 
 
 
 
 
 
 
 
 
 
 
2217
  msgstr ""
2218
 
2219
+ #: admin/views/settings-disable-ads.php:18
2220
+ msgid "Disable ads on secondary queries"
2221
  msgstr ""
2222
 
2223
+ #: admin/views/settings-disable-ads.php:19
2224
+ msgid ""
2225
+ "Secondary queries are custom queries of posts outside the main query of a "
2226
+ "page. Try this option if you see ads injected on places where they shouldn’t "
2227
+ "appear."
2228
  msgstr ""
2229
 
2230
+ #: admin/views/settings-disable-ads.php:25
2231
+ msgid "Disable ads in RSS Feed"
2232
  msgstr ""
2233
 
2234
+ #: admin/views/ad-group-edit.php:18
2235
+ msgid "You did not select an item for editing."
2236
  msgstr ""
2237
 
2238
+ #: admin/views/ad-group-edit.php:39
2239
+ msgctxt "Taxonomy Name"
2240
+ msgid "Name"
2241
  msgstr ""
2242
 
2243
+ #: admin/views/ad-group-edit.php:49
2244
+ msgctxt "Taxonomy Slug"
2245
+ msgid "Slug"
2246
  msgstr ""
2247
 
2248
+ #: admin/views/ad-group-edit.php:54 admin/views/ad-output-metabox.php:63
2249
  msgid ""
2250
+ "An id-like string with only letters in lower case, numbers, and hyphens."
 
2251
  msgstr ""
2252
 
2253
+ #: admin/views/ad-group-edit.php:61
2254
+ msgctxt "Taxonomy Description"
2255
+ msgid "Description"
2256
  msgstr ""
2257
 
2258
+ #: admin/views/ad-group-edit.php:73
2259
+ msgid "Create new Ad Group"
2260
  msgstr ""
2261
 
2262
+ #: admin/views/ad-group-edit.php:75
2263
+ msgid "Update"
2264
  msgstr ""
2265
 
2266
+ #: admin/views/placement-injection-top.php:10
2267
+ msgid "Congratulations! Your ad is now visible in the frontend."
2268
  msgstr ""
2269
 
2270
+ #: admin/views/placement-injection-top.php:11
2271
+ msgid "Adjust the placement options"
2272
  msgstr ""
2273
 
2274
+ #: admin/views/placement-injection-top.php:12
2275
+ #, php-format
2276
+ msgid ""
2277
+ "Ad not showing up? Take a look <a href=\"%s\" target=\"_blank\">here</a>"
2278
  msgstr ""
2279
 
2280
+ #: admin/views/placement-injection-top.php:15
2281
+ msgid "Where do you want to display the ad?"
2282
  msgstr ""
2283
 
2284
+ #: admin/views/placement-injection-top.php:24
2285
+ #: modules/gadsense/admin/admin.php:178
2286
  #, php-format
2287
+ msgid ""
2288
+ "The AdSense verification and Auto ads code is already activated in the <a "
2289
+ "href=\"%s\">AdSense settings</a>."
2290
  msgstr ""
2291
 
2292
+ #: admin/views/placement-injection-top.php:30
2293
+ #: modules/gadsense/admin/admin.php:180
2294
+ msgid ""
2295
+ "No need to add the code manually here, unless you want to include it into "
2296
+ "certain pages only."
2297
  msgstr ""
2298
 
2299
+ #: admin/views/placement-injection-top.php:33
2300
+ msgid ""
2301
+ "Click on the button below to add the Auto ads code to the header of your "
2302
+ "site."
2303
  msgstr ""
2304
 
2305
+ #. this is a label in a button when a user uses an AdSense Auto ads code in a plain code field
2306
+ #. the button has barely space for the original English text, so keep it short
2307
+ #: admin/views/placement-injection-top.php:42
2308
+ msgid "inject Auto ads"
2309
  msgstr ""
2310
 
2311
+ #: admin/views/placement-injection-top.php:48
2312
+ msgid "New placement"
2313
  msgstr ""
2314
 
2315
+ #: admin/views/placement-injection-top.php:52
2316
+ msgid "PHP or Shortcode"
 
 
 
2317
  msgstr ""
2318
 
2319
+ #: admin/views/placement-injection-top.php:53
2320
+ msgid "Manage Sidebar"
 
 
 
2321
  msgstr ""
2322
 
2323
+ #: admin/views/placement-injection-top.php:54
2324
+ msgid "Header (Manual)"
2325
  msgstr ""
2326
 
2327
+ #: admin/views/placement-injection-top.php:58
2328
+ #: admin/views/placement-injection-top.php:62
2329
+ msgid "Custom Position"
2330
  msgstr ""
2331
 
2332
+ #: admin/views/placement-injection-top.php:58
2333
+ msgid "Show Pro Places"
2334
  msgstr ""
2335
 
2336
+ #: admin/views/placement-injection-top.php:67
2337
+ msgid "AdSense In-feed"
 
2338
  msgstr ""
2339
 
2340
+ #: admin/views/placement-injection-top.php:73
2341
+ msgid "Show Sticky Places"
2342
  msgstr ""
2343
 
2344
+ #: admin/views/placement-injection-top.php:79
2345
+ msgid "Show PopUp"
2346
  msgstr ""
2347
 
2348
+ #: admin/views/placement-injection-top.php:83
2349
+ msgid "PopUp & Layer"
2350
  msgstr ""
2351
 
2352
+ #: admin/views/placement-injection-top.php:88
2353
+ msgid "see all…"
2354
  msgstr ""
2355
 
2356
+ #: admin/views/placement-injection-top.php:120
2357
+ msgid "Existing placement"
2358
  msgstr ""
2359
 
2360
+ #: admin/views/placement-injection-top.php:125
2361
+ #, php-format
2362
+ msgid "Or use the shortcode %s to insert the ad into the content manually."
2363
  msgstr ""
2364
 
2365
+ #: admin/views/placement-injection-top.php:126
2366
+ #, php-format
2367
+ msgid ""
2368
+ "Learn more about your choices to display an ad in the <a href=\"%s\" "
2369
+ "target=\"_blank\">manual</a>."
2370
  msgstr ""
2371
 
2372
+ #: admin/views/ad-group-list-form-row.php:29 admin/views/placements.php:42
2373
+ #: modules/gadsense/admin/views/external-ads-list.php:45
2374
+ #: modules/gadsense/admin/views/external-ads-list.php:55
2375
+ #: modules/privacy/admin/views/setting-consent-method.php:9
2376
+ msgid "Name"
2377
  msgstr ""
2378
 
2379
+ #: admin/views/ad-group-list-form-row.php:55 admin/views/placements.php:41
2380
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:105
2381
+ msgid "Type"
2382
  msgstr ""
2383
 
2384
+ #: admin/views/ad-group-list-form-row.php:71
2385
+ msgctxt "option to display all ads in an ad groups"
2386
+ msgid "all"
 
2387
  msgstr ""
2388
 
2389
+ #: admin/views/ad-group-list-form-row.php:78
2390
+ msgid "Visible ads"
 
 
2391
  msgstr ""
2392
 
2393
+ #: admin/views/ad-group-list-form-row.php:80
2394
+ msgid "Number of ads that are visible at the same time"
2395
  msgstr ""
2396
 
2397
+ #: admin/views/ad-info.php:2
2398
+ #, php-format
2399
+ msgid "Ad Id: %s"
2400
  msgstr ""
2401
 
2402
+ #: admin/views/ad-info.php:3 admin/views/placements.php:102
2403
+ #: admin/views/ad-group-list-row.php:19
2404
+ msgid "shortcode"
2405
  msgstr ""
2406
 
2407
+ #: admin/views/ad-info.php:5
2408
+ msgid "theme function"
2409
  msgstr ""
2410
 
2411
+ #: admin/views/ad-info.php:7
2412
+ #, php-format
2413
+ msgid ""
2414
+ "Find more display options in the <a href=\"%s\" target=\"_blank\">manual</a>."
2415
  msgstr ""
2416
 
2417
+ #: admin/views/ad-info.php:11
2418
+ msgid "click to change"
2419
  msgstr ""
2420
 
2421
+ #: admin/views/ad-info.php:18
2422
+ msgid "Add a description"
2423
  msgstr ""
2424
 
2425
+ #: admin/views/ad-info.php:22
2426
+ msgid "Internal description or your own notes about this ad."
2427
  msgstr ""
2428
 
2429
+ #: admin/views/support-callout.php:3
2430
+ msgid "Problems or questions?"
2431
  msgstr ""
2432
 
2433
+ #: admin/views/support-callout.php:4
2434
+ msgid "Save time and get personal support."
2435
  msgstr ""
2436
 
2437
+ #: admin/views/support-callout.php:4
2438
+ msgid "Ask your question!"
2439
  msgstr ""
2440
 
2441
+ #: admin/views/placements.php:10
2442
+ msgid ""
2443
+ "Couldn’t create the new placement. Please check your form field and whether "
2444
+ "the name is already in use."
2445
  msgstr ""
2446
 
2447
+ #: admin/views/placements.php:14
2448
+ msgid "Placements updated"
2449
  msgstr ""
2450
 
2451
+ #: admin/views/placements.php:20 admin/views/placements.php:209
2452
+ msgid "Create a new placement"
2453
  msgstr ""
2454
 
2455
+ #: admin/views/placements.php:21 admin/views/placements.php:211
2456
+ msgid "New Placement"
2457
  msgstr ""
2458
 
2459
+ #: admin/views/placements.php:26
2460
+ msgid ""
2461
+ "Placements are physically places in your theme and posts. You can use them "
2462
+ "if you plan to change ads and ad groups on the same place without the need "
2463
+ "to change your templates."
2464
  msgstr ""
2465
 
2466
+ #: admin/views/placements.php:27
2467
  #, php-format
2468
  msgid ""
2469
+ "See also the manual for more information on <a href=\"%s\">placements</a>."
 
 
 
 
 
2470
  msgstr ""
2471
 
2472
+ #: admin/views/placements.php:43 modules/import-export/views/page.php:26
2473
+ msgid "Options"
2474
  msgstr ""
2475
 
2476
+ #: admin/views/placements.php:65
2477
+ #, php-format
2478
  msgid ""
2479
+ "Placement type \"%s\" is missing and was reset to \"default\".<br/>Please "
2480
+ "check if the responsible add-on is activated."
2481
  msgstr ""
2482
 
2483
+ #: admin/views/placements.php:84 admin/views/ad-output-metabox.php:11
2484
+ #: admin/views/placements-ad-label-position.php:2
2485
+ #: admin/views/placements-ad-label-position.php:5
2486
+ #: admin/views/placements-ad-label.php:1 admin/views/placements-ad-label.php:4
2487
+ #: modules/gadsense/includes/class-network-adsense.php:239
2488
+ msgid "default"
2489
  msgstr ""
2490
 
2491
+ #: admin/views/placements.php:93
2492
+ msgid "show usage"
2493
  msgstr ""
2494
 
2495
+ #: admin/views/placements.php:105
2496
+ msgid "template (PHP)"
2497
  msgstr ""
2498
 
2499
+ #: admin/views/placements.php:120
2500
+ msgid "Item"
2501
  msgstr ""
2502
 
2503
+ #: admin/views/placements.php:134
2504
+ msgid "position"
2505
  msgstr ""
2506
 
2507
+ #: admin/views/placements.php:140
2508
+ msgid "Important Notice"
2509
  msgstr ""
2510
 
2511
+ #: admin/views/placements.php:162
2512
+ msgid "ad label"
2513
  msgstr ""
2514
 
2515
+ #: admin/views/placements.php:172
2516
+ msgid "show all options"
2517
  msgstr ""
2518
 
2519
+ #: admin/views/placements.php:191
2520
  #, php-format
2521
  msgid ""
2522
+ "Tutorial: <a href=\"%s\" target=\"_blank\">How to place visible ads in the "
2523
+ "header of your website</a>."
2524
  msgstr ""
2525
 
2526
+ #: admin/views/placements.php:200
2527
+ msgctxt "checkbox to remove placement"
2528
+ msgid "delete"
2529
  msgstr ""
2530
 
2531
+ #: admin/views/placements.php:207
2532
+ msgid "Save Placements"
 
 
 
 
2533
  msgstr ""
2534
 
2535
+ #: admin/views/ad-main-metabox.php:3
2536
+ msgid "No ad types defined"
 
 
 
2537
  msgstr ""
2538
 
2539
+ #: admin/views/ad-conditions-string-operators.php:12
2540
+ #: modules/privacy/admin/views/setting-consent-method.php:10
2541
+ msgid "contains"
 
2542
  msgstr ""
2543
 
2544
+ #: admin/views/ad-conditions-string-operators.php:13
2545
+ msgid "starts with"
 
 
2546
  msgstr ""
2547
 
2548
+ #: admin/views/ad-conditions-string-operators.php:14
2549
+ msgid "ends with"
2550
  msgstr ""
2551
 
2552
+ #: admin/views/ad-conditions-string-operators.php:15
2553
+ msgid "matches"
2554
  msgstr ""
2555
 
2556
+ #: admin/views/ad-conditions-string-operators.php:16
2557
+ msgid "matches regex"
2558
  msgstr ""
2559
 
2560
+ #: admin/views/ad-conditions-string-operators.php:17
2561
+ msgid "does not contain"
2562
  msgstr ""
2563
 
2564
+ #: admin/views/ad-conditions-string-operators.php:18
2565
+ msgid "does not start with"
 
2566
  msgstr ""
2567
 
2568
+ #: admin/views/ad-conditions-string-operators.php:19
2569
+ msgid "does not end with"
2570
  msgstr ""
2571
 
2572
+ #: admin/views/ad-conditions-string-operators.php:20
2573
+ msgid "does not match"
2574
  msgstr ""
2575
 
2576
+ #: admin/views/ad-conditions-string-operators.php:21
2577
+ msgid "does not match regex"
2578
  msgstr ""
2579
 
2580
+ #: admin/views/placements-content-index.php:2
2581
+ msgid "after"
2582
  msgstr ""
2583
 
2584
+ #: admin/views/placements-content-index.php:3
2585
+ msgid "before"
2586
  msgstr ""
2587
 
2588
+ #: admin/views/placements-content-index.php:30
2589
+ msgid "start counting from bottom"
2590
  msgstr ""
2591
 
2592
+ #: admin/views/ad-parameters-size.php:9
2593
+ msgid "size"
2594
  msgstr ""
2595
 
2596
+ #: admin/views/ad-parameters-size.php:11
2597
+ msgid "width"
 
2598
  msgstr ""
2599
 
2600
+ #: admin/views/ad-parameters-size.php:12
2601
+ msgid "height"
 
 
 
2602
  msgstr ""
2603
 
2604
+ #: admin/views/ad-parameters-size.php:20
2605
+ msgid "reserve this space"
 
 
2606
  msgstr ""
2607
 
2608
+ #: admin/views/ad-group.php:23
2609
+ msgid "Ad Group successfully created"
 
 
2610
  msgstr ""
2611
 
2612
+ #: admin/views/ad-group.php:34
2613
+ msgid "Ad Groups successfully updated"
 
 
 
2614
  msgstr ""
2615
 
2616
+ #: admin/views/ad-group.php:60
2617
+ #, php-format
2618
+ msgid "Search results for &#8220;%s&#8221;"
2619
  msgstr ""
2620
 
2621
+ #: admin/views/ad-group.php:67
2622
+ msgid "Group title"
2623
  msgstr ""
2624
 
2625
+ #: admin/views/ad-group.php:68
2626
+ msgid "save"
2627
  msgstr ""
2628
 
2629
+ #: admin/views/ad-group.php:70
2630
  msgid ""
2631
+ "Ad Groups are a very flexible method to bundle ads. You can use them to "
2632
+ "display random ads in the frontend or run split tests, but also just for "
2633
+ "informational purposes. Not only can an Ad Groups have multiple ads, but an "
2634
+ "ad can belong to multiple ad groups."
2635
  msgstr ""
2636
 
2637
+ #: admin/views/ad-group.php:76
2638
+ #, php-format
2639
+ msgid ""
2640
+ "Find more information about ad groups in the <a href=\"%s\" "
2641
+ "target=\"_blank\">manual</a>."
2642
  msgstr ""
2643
 
2644
+ #: admin/views/ad-group.php:104
2645
+ msgid "Update Groups"
2646
  msgstr ""
2647
 
2648
+ #: admin/views/ad-submitbox-meta.php:5
2649
+ msgid "Set expiry date"
2650
  msgstr ""
2651
 
2652
+ #: admin/views/ad-submitbox-meta.php:12
2653
+ msgid "Month"
 
 
 
2654
  msgstr ""
2655
 
2656
+ #: admin/views/ad-submitbox-meta.php:17
2657
  #, php-format
2658
+ msgctxt "1: month number (01, 02, etc.), 2: month abbreviation"
2659
+ msgid "%1$s-%2$s"
2660
  msgstr ""
2661
 
2662
+ #: admin/views/ad-submitbox-meta.php:23
2663
+ msgid "Day"
2664
  msgstr ""
2665
 
2666
+ #: admin/views/ad-submitbox-meta.php:24
2667
+ msgid "Year"
 
 
 
2668
  msgstr ""
2669
 
2670
+ #: admin/views/ad-submitbox-meta.php:25
2671
+ msgid "Hour"
2672
  msgstr ""
2673
 
2674
+ #: admin/views/ad-submitbox-meta.php:26
2675
+ msgid "Minute"
2676
  msgstr ""
2677
 
2678
+ #: admin/views/ad-submitbox-meta.php:31
2679
+ #, php-format
2680
+ msgctxt ""
2681
+ "order of expiry date fields 1: month, 2: day, 3: year, 4: hour, 5: minute"
2682
+ msgid "%1$s %2$s, %3$s @ %4$s %5$s"
2683
  msgstr ""
2684
 
2685
+ #: admin/views/post-ad-settings-metabox.php:1
2686
+ msgid "How to disable ads on specific pages"
2687
  msgstr ""
2688
 
2689
+ #: admin/views/post-ad-settings-metabox.php:5
2690
+ msgid "Disable ads on this page"
2691
  msgstr ""
2692
 
2693
+ #: admin/views/checks.php:14
2694
+ #, php-format
2695
+ msgid ""
2696
+ "Advanced Ads detected potential problems with your ad setup. %1$sShow me "
2697
+ "these errors%2$s"
2698
+ msgstr ""
2699
+
2700
+ #: admin/views/ad-info-after-textarea.php:18
2701
+ msgid ""
2702
+ "The code of this ad might not work properly with the <em>Content</em> "
2703
+ "placement."
2704
+ msgstr ""
2705
+
2706
+ #: admin/views/ad-info-after-textarea.php:25
2707
+ #, php-format
2708
+ msgid "Reach out to <a href=\"%s\">support</a> to get help."
2709
  msgstr ""
2710
 
2711
+ #: admin/views/placement-form.php:8
2712
+ msgid "Choose a placement type"
2713
  msgstr ""
2714
 
2715
+ #: admin/views/placement-form.php:9
2716
  #, php-format
2717
  msgid ""
2718
+ "Placement types define where the ad is going to be displayed. Learn more "
2719
+ "about the different types from the <a href=\"%s\">manual</a>"
2720
  msgstr ""
2721
 
2722
+ #: admin/views/placement-form.php:33
2723
+ msgid "Please select a placement type."
 
2724
  msgstr ""
2725
 
2726
+ #: admin/views/placement-form.php:35
2727
+ msgid "Choose a Name"
2728
  msgstr ""
2729
 
2730
+ #: admin/views/placement-form.php:36
2731
+ msgid ""
2732
+ "The name of the placement is only visible to you. Tip: choose a descriptive "
2733
+ "one, e.g. <em>Below Post Headline</em>."
2734
  msgstr ""
2735
 
2736
+ #: admin/views/placement-form.php:38
2737
+ msgid "Placement Name"
2738
  msgstr ""
2739
 
2740
+ #: admin/views/placement-form.php:39
2741
+ msgid "Please enter a name for your placement."
2742
  msgstr ""
2743
 
2744
+ #: admin/views/placement-form.php:40
2745
+ msgid "Choose the Ad or Group"
2746
  msgstr ""
2747
 
2748
+ #: admin/views/placement-form.php:41
2749
+ msgid "The ad or group that should be displayed."
 
 
 
2750
  msgstr ""
2751
 
2752
+ #: admin/views/placement-form.php:60
2753
+ msgid "Save New Placement"
 
2754
  msgstr ""
2755
 
2756
+ #: admin/views/feedback-disable.php:5
2757
+ msgid "Why did you decide to disable Advanced Ads?"
2758
  msgstr ""
2759
 
2760
+ #: admin/views/feedback-disable.php:7
2761
+ msgid "I have a problem, a question or need help."
2762
  msgstr ""
2763
 
2764
+ #: admin/views/feedback-disable.php:8
2765
+ msgid "Please let us know how we can help"
2766
  msgstr ""
2767
 
2768
+ #: admin/views/feedback-disable.php:15
2769
+ #, php-format
2770
+ msgid "Send me free help to %s"
2771
  msgstr ""
2772
 
2773
+ #: admin/views/feedback-disable.php:20
2774
+ msgid "Ads are not showing up"
2775
  msgstr ""
2776
 
2777
+ #: admin/views/feedback-disable.php:21
2778
+ msgid "It is only temporary"
2779
  msgstr ""
2780
 
2781
+ #: admin/views/feedback-disable.php:22
2782
+ msgid "I miss a feature"
 
 
2783
  msgstr ""
2784
 
2785
+ #: admin/views/feedback-disable.php:23
2786
+ msgid "Which one?"
2787
  msgstr ""
2788
 
2789
+ #: admin/views/feedback-disable.php:24
2790
+ msgid "I stopped using ads on my site."
 
 
2791
  msgstr ""
2792
 
2793
+ #: admin/views/feedback-disable.php:25
2794
+ msgid "I switched to another plugin"
2795
  msgstr ""
2796
 
2797
+ #: admin/views/feedback-disable.php:30
2798
+ msgid "Send feedback & deactivate"
2799
  msgstr ""
2800
 
2801
+ #: admin/views/feedback-disable.php:31
2802
+ msgid "Send feedback"
 
2803
  msgstr ""
2804
 
2805
+ #: admin/views/feedback-disable.php:33
2806
+ msgid "Only Deactivate"
2807
  msgstr ""
2808
 
2809
+ #: admin/views/feedback-disable.php:36
2810
  msgid ""
2811
+ "Thanks for submitting your feedback. I will reply within 24 hours on working "
2812
+ "days."
 
2813
  msgstr ""
2814
 
2815
+ #. %s is the title of the website
2816
+ #: admin/views/feedback-disable.php:41
2817
+ #, php-format
2818
+ msgid "All the best to you and %s."
2819
  msgstr ""
2820
 
2821
+ #: admin/views/feedback-disable.php:42
2822
+ msgid "Disabling the plugin now…"
2823
  msgstr ""
2824
 
2825
+ #: admin/views/ad-info-bottom.php:14
2826
+ msgctxt "wizard navigation"
2827
+ msgid "previous"
2828
  msgstr ""
2829
 
2830
+ #: admin/views/ad-info-bottom.php:17 admin/views/ad-info-bottom.php:19
2831
+ msgctxt "wizard navigation"
2832
+ msgid "next"
2833
  msgstr ""
2834
 
2835
+ #: admin/views/ad-info-bottom.php:17
2836
+ msgctxt "wizard navigation"
2837
+ msgid "save"
2838
  msgstr ""
2839
 
2840
+ #: admin/views/ad-output-metabox.php:1
2841
+ msgid "Everything connected to the ads layout and output."
2842
  msgstr ""
2843
 
2844
+ #: admin/views/ad-output-metabox.php:4
2845
+ #: admin/views/placements-ad-label-position.php:1
2846
+ msgid "Position"
2847
  msgstr ""
2848
 
2849
+ #: admin/views/ad-output-metabox.php:7
2850
+ msgid "- default -"
 
 
2851
  msgstr ""
2852
 
2853
+ #: admin/views/ad-output-metabox.php:12
2854
+ #: admin/views/placements-ad-label-position.php:7
2855
+ #: admin/views/placements-ad-label-position.php:10
2856
+ msgid "left"
2857
  msgstr ""
2858
 
2859
+ #: admin/views/ad-output-metabox.php:17
2860
+ #: admin/views/placements-ad-label-position.php:11
2861
+ #: admin/views/placements-ad-label-position.php:14
2862
+ msgid "center"
2863
  msgstr ""
2864
 
2865
+ #: admin/views/ad-output-metabox.php:22
2866
+ #: admin/views/placements-ad-label-position.php:15
2867
+ #: admin/views/placements-ad-label-position.php:18
2868
+ msgid "right"
2869
  msgstr ""
2870
 
2871
+ #: admin/views/ad-output-metabox.php:31
2872
+ msgid ""
2873
+ "Check this if you don't want the following elements to float around the ad. "
2874
+ "(adds a clearfix)"
2875
  msgstr ""
2876
 
2877
+ #: admin/views/ad-output-metabox.php:35
2878
+ msgid "Margin"
2879
  msgstr ""
2880
 
2881
+ #: admin/views/ad-output-metabox.php:37
2882
+ msgid "top:"
 
 
2883
  msgstr ""
2884
 
2885
+ #: admin/views/ad-output-metabox.php:41
2886
+ msgid "right:"
2887
  msgstr ""
2888
 
2889
+ #: admin/views/ad-output-metabox.php:45
2890
+ msgid "bottom:"
 
 
 
2891
  msgstr ""
2892
 
2893
+ #: admin/views/ad-output-metabox.php:49
2894
+ msgid "left:"
 
 
 
 
2895
  msgstr ""
2896
 
2897
+ #: admin/views/ad-output-metabox.php:53
2898
+ msgid "tip: use this to add a margin around the ad"
2899
  msgstr ""
2900
 
2901
+ #: admin/views/ad-output-metabox.php:56
2902
+ msgid "container ID"
2903
  msgstr ""
2904
 
2905
+ #: admin/views/ad-output-metabox.php:62
2906
+ msgid "Specify the id of the ad container. Leave blank for random or no id."
 
 
2907
  msgstr ""
2908
 
2909
+ #: admin/views/ad-output-metabox.php:66
2910
+ msgid "container classes"
2911
  msgstr ""
2912
 
2913
+ #: admin/views/ad-output-metabox.php:72
2914
+ msgid ""
2915
+ "Specify one or more classes for the container. Separate multiple classes "
2916
+ "with a space"
2917
  msgstr ""
2918
 
2919
+ #: admin/views/ad-output-metabox.php:75
2920
+ msgid "Enable debug mode"
 
 
 
 
2921
  msgstr ""
2922
 
2923
+ #: admin/views/pitch-bundle.php:1
2924
+ msgid "All Access – with all available add-ons"
2925
  msgstr ""
2926
 
2927
+ #: admin/views/pitch-bundle.php:12
2928
+ msgid "Risk free with 30-day Money-Back guarantee"
2929
+ msgstr ""
2930
+
2931
+ #: admin/views/pitch-bundle.php:13
2932
+ msgid "Get All Access"
2933
  msgstr ""
2934
 
2935
+ #: admin/views/ad-group-list-row.php:22
2936
+ msgid "template"
2937
  msgstr ""
2938
 
2939
+ #: admin/views/ad-group-list-row.php:25
2940
+ #, php-format
2941
  msgid ""
2942
+ "Learn more about using groups in the <a href=\"%s\" target=\"_blank\">"
2943
+ "manual</a>."
2944
  msgstr ""
2945
 
2946
+ #: admin/views/ad-group-list-row.php:34
2947
  #, php-format
2948
+ msgid "Type: %s"
 
 
 
2949
  msgstr ""
2950
 
2951
+ #: admin/views/ad-group-list-row.php:39
2952
+ #, php-format
2953
+ msgid "ID: %s"
2954
  msgstr ""
2955
 
2956
+ #: admin/views/ad-group-list-header.php:16
2957
+ msgid "Details"
2958
  msgstr ""
2959
 
2960
+ #: admin/views/setting-license.php:5
2961
+ msgid "Your license expired."
 
2962
  msgstr ""
2963
 
2964
+ #: admin/views/setting-license.php:13
2965
+ msgid "Update expiry date"
 
2966
  msgstr ""
2967
 
2968
+ #: admin/views/setting-license.php:18
2969
+ #, php-format
2970
+ msgid ""
2971
+ "Click on %2$s if you renewed it or have a subscription or <a href=\"%1$s\" "
2972
+ "class=\"advads-renewal-link\" target=\"_blank\">renew your license</a>."
2973
  msgstr ""
2974
 
2975
+ #: admin/views/setting-license.php:30
2976
+ #, php-format
2977
+ msgid "(%d days left)"
2978
  msgstr ""
2979
 
2980
+ #: admin/views/setting-license.php:34
2981
+ msgid "License key"
2982
  msgstr ""
2983
 
2984
+ #: admin/views/setting-license.php:51
2985
+ msgid "Deactivate License"
2986
  msgstr ""
2987
 
2988
+ #: admin/views/setting-license.php:57
2989
+ msgid "Update License"
2990
  msgstr ""
2991
 
2992
+ #: admin/views/setting-license.php:57
2993
+ msgid "Activate License"
2994
  msgstr ""
2995
 
2996
+ #: admin/views/setting-license.php:62
2997
+ msgid "License key invalid"
2998
  msgstr ""
2999
 
3000
+ #: admin/views/setting-license.php:70
3001
+ msgid "active"
3002
  msgstr ""
3003
 
3004
+ #: admin/views/setting-target.php:4
3005
+ msgid ""
3006
+ "Open programatically created links in a new window (use <code>"
3007
+ "target=\"_blank\"</code>)"
3008
  msgstr ""
3009
 
3010
+ #: admin/views/placements-ad-label-position.php:24
3011
+ msgid ""
3012
+ "Check this if you don't want the following elements to float around the ad. "
3013
+ "(adds a placement_clearfix)"
3014
  msgstr ""
3015
 
3016
+ #: admin/views/ad-list-no-ads.php:4
3017
+ msgid "Watch the “First Ad” Tutorial (Video)"
 
 
 
 
3018
  msgstr ""
3019
 
3020
+ #: admin/views/placements-ad-label.php:6 admin/views/placements-ad-label.php:9
3021
+ #: modules/ads-txt/admin/views/setting-create.php:2
3022
+ #: modules/ads-txt/admin/views/setting-create.php:4
3023
+ msgid "enabled"
3024
  msgstr ""
3025
 
3026
+ #: admin/views/placements-ad-label.php:11
3027
+ #: admin/views/placements-ad-label.php:14
3028
+ #: modules/ads-txt/admin/views/setting-create.php:6
3029
+ #: modules/ads-txt/admin/views/setting-create.php:8
3030
+ msgid "disabled"
3031
  msgstr ""
3032
 
3033
+ #: public/views/ad-debug.php:6
3034
+ msgid "Ad debug output"
 
3035
  msgstr ""
3036
 
3037
+ #: public/views/ad-debug.php:8
3038
+ msgid "Find solutions in the manual"
 
 
 
3039
  msgstr ""
3040
 
3041
  #: admin/views/notices/adblock.php:4
3060
  msgid "See them in action"
3061
  msgstr ""
3062
 
3063
+ #: admin/views/notices/jqueryui_error.php:2
3064
+ #: admin/views/conditions/ad-display-metabox.php:46
3065
+ #, php-format
3066
+ msgid ""
3067
+ "There might be a problem with layouts and scripts in your dashboard. Please "
3068
+ "check <a href=\"%s\" target=\"_blank\">this article to learn more</a>."
3069
+ msgstr ""
3070
+
3071
  #: admin/views/notices/welcome-panel.php:10
3072
  msgid "Welcome to Advanced Ads!"
3073
  msgstr ""
3110
  msgid "Setting up AdSense ads manually"
3111
  msgstr ""
3112
 
3113
+ #: admin/views/conditions/not-selected.php:2
3114
+ msgctxt "Error message shown when no display condition term is selected"
3115
+ msgid "Please select some items."
 
 
 
 
 
 
 
 
3116
  msgstr ""
3117
 
3118
+ #: admin/views/conditions/condition-operator.php:2
3119
+ #: admin/views/conditions/condition-is-or-not.php:3
3120
+ msgid "is"
3121
  msgstr ""
3122
 
3123
+ #: admin/views/conditions/condition-operator.php:3
3124
+ #: admin/views/conditions/condition-is-or-not.php:4
3125
+ msgid "is not"
3126
  msgstr ""
3127
 
3128
+ #: admin/views/conditions/condition-number.php:3
3129
+ msgid "equal"
 
 
 
3130
  msgstr ""
3131
 
3132
+ #: admin/views/conditions/condition-number.php:4
3133
+ msgid "equal or higher"
 
 
3134
  msgstr ""
3135
 
3136
+ #: admin/views/conditions/condition-number.php:5
3137
+ msgid "equal or lower"
 
3138
  msgstr ""
3139
 
3140
+ #: admin/views/conditions/display-conditions-form-top.php:4
3141
+ msgid "If you want to display the ad everywhere, don't do anything here. "
3142
  msgstr ""
3143
 
3144
+ #: admin/views/conditions/condition-is-or-not.php:9
3145
+ #: admin/views/conditions/condition-device.php:9
3146
+ msgid "Manual and Troubleshooting"
3147
  msgstr ""
3148
 
3149
+ #: admin/views/conditions/visitor-conditions-form-top.php:4
 
3150
  msgid ""
3151
+ "Visitor conditions limit the number of users who can see your ad. There is "
3152
+ "no need to set visitor conditions if you want all users to see the ad."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3153
  msgstr ""
3154
 
3155
+ #: admin/views/conditions/visitor-conditions-form-top.php:9
3156
+ #: modules/privacy/admin/views/setting-enable.php:4
3157
+ msgid "It seems that a caching plugin is activated."
 
3158
  msgstr ""
3159
 
3160
+ #: admin/views/conditions/visitor-conditions-form-top.php:11
 
3161
  #, php-format
3162
+ msgid ""
3163
+ "Check out cache-busting in <a href=\"%s\" target=\"_blank\">Advanced Ads "
3164
+ "Pro</a> if dynamic features get cached."
3165
  msgstr ""
3166
 
3167
+ #: admin/views/conditions/condition-author.php:28
 
3168
  #, php-format
3169
  msgid ""
3170
+ "Only %d elements are displayed above. Use the <code>advanced-ads-admin-max-"
3171
+ "terms</code> filter to change this limit according to <a href=\"%s\" "
3172
+ "target=\"_blank\">this page</a>."
 
 
 
3173
  msgstr ""
3174
 
3175
+ #: admin/views/conditions/display-conditions-list.php:45
3176
+ msgid "Forced to OR."
3177
  msgstr ""
3178
 
3179
+ #: admin/views/conditions/display-conditions-list.php:46
3180
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:116
3181
+ msgid "manual"
3182
  msgstr ""
3183
 
3184
+ #: admin/views/conditions/ad-display-metabox.php:17
3185
+ msgid ""
3186
+ "Click on the button below if the ad should NOT show up on all pages when "
3187
+ "included automatically."
3188
  msgstr ""
3189
 
3190
+ #: admin/views/conditions/ad-display-metabox.php:19
3191
+ msgid "Hide the ad on some pages"
 
 
 
 
 
3192
  msgstr ""
3193
 
3194
+ #: admin/views/conditions/ad-display-metabox.php:34
3195
+ msgid "Watch video"
 
 
 
3196
  msgstr ""
3197
 
3198
+ #: admin/views/conditions/ad-display-metabox.php:47
3199
+ msgid "A page with this ad on it must match all of the following conditions."
 
 
 
 
3200
  msgstr ""
3201
 
3202
+ #: admin/views/conditions/no-option.php:7
3203
  #, php-format
3204
+ msgctxt ""
3205
+ "Error message shown when no terms exists for display condition; placeholder "
3206
+ "is taxonomy label."
3207
+ msgid "No %s found on your site."
 
 
 
 
3208
  msgstr ""
3209
 
3210
+ #: admin/views/conditions/condition-device.php:3
3211
+ msgid "Mobile (including tablets)"
3212
  msgstr ""
3213
 
3214
+ #: admin/views/conditions/condition-device.php:4
3215
+ msgid "Desktop"
3216
  msgstr ""
3217
 
3218
+ #: admin/views/conditions/conditions-form.php:8
3219
+ msgid "New condition"
3220
  msgstr ""
3221
 
3222
+ #: admin/views/conditions/conditions-form.php:13
3223
+ msgid "-- choose a condition --"
 
3224
  msgstr ""
3225
 
3226
+ #: admin/views/conditions/conditions-form.php:22
3227
+ msgid "Add-On features"
3228
  msgstr ""
3229
 
3230
+ #: admin/views/conditions/ad-visitor-metabox.php:17
3231
+ msgid ""
3232
+ "Click on the button below if the ad should NOT be visible to all visitors"
3233
  msgstr ""
3234
 
3235
+ #: admin/views/conditions/ad-visitor-metabox.php:19
3236
+ msgid "Hide the ad from some users"
 
3237
  msgstr ""
3238
 
3239
+ #: admin/views/conditions/ad-visitor-metabox.php:29
3240
+ msgid ""
3241
+ "Display conditions that are based on the user. Use with caution on cached "
3242
+ "websites."
3243
  msgstr ""
3244
 
3245
+ #: modules/gadsense/includes/class-mapi.php:338
3246
  #, php-format
3247
  msgid "Error while retrieving ad code for \"%s\"."
3248
  msgstr ""
3249
 
3250
+ #: modules/gadsense/includes/class-mapi.php:365
3251
  #, php-format
3252
  msgid "Invalid response while retrieving ad code for \"%s\"."
3253
  msgstr ""
3254
 
3255
+ #: modules/gadsense/includes/class-mapi.php:406
3256
  #, php-format
3257
  msgid "Error while retrieving adUnits list for \"%s\"."
3258
  msgstr ""
3259
 
3260
+ #: modules/gadsense/includes/class-mapi.php:413
3261
  #, php-format
3262
  msgid "Invalid response while retrieving adUnits list for \"%s\"."
3263
  msgstr ""
3264
 
3265
+ #: modules/gadsense/includes/class-mapi.php:421
3266
  msgid "Reason:"
3267
  msgstr ""
3268
 
3269
+ #: modules/gadsense/includes/class-mapi.php:422
3270
  msgid "Message:"
3271
  msgstr ""
3272
 
3273
  #. %1$s is the AdSense publisher ID; %2$s a starting a tag to the AdSense ad unit list and %3$s the closing link.
3274
+ #: modules/gadsense/includes/class-mapi.php:437
3275
  #, php-format
3276
  msgid ""
3277
  "The account \"%1$s\" does not seem to have any ad units. Please create some "
3278
  "%2$shere%3$s."
3279
  msgstr ""
3280
 
3281
+ #: modules/gadsense/includes/class-mapi.php:499
3282
  msgid ""
3283
  "It seems that some changes have been made in the Advanced Ads settings. "
3284
  "Please refresh this page."
3285
  msgstr ""
3286
 
3287
+ #: modules/gadsense/includes/class-mapi.php:506
3288
  #, php-format
3289
  msgid ""
3290
  "Advanced Ads does not have access to your account (<code>%s</code>) anymore."
3291
  msgstr ""
3292
 
3293
+ #: modules/gadsense/includes/class-mapi.php:548
3294
  #, php-format
3295
  msgid "error while renewing access token for \"%s\""
3296
  msgstr ""
3297
 
3298
+ #: modules/gadsense/includes/class-mapi.php:573
3299
  #, php-format
3300
  msgid "invalid response received while renewing access token for \"%s\""
3301
  msgstr ""
3302
 
3303
+ #: modules/gadsense/includes/class-mapi.php:642
3304
+ msgid "This ad code is from a different AdSense Account"
3305
+ msgstr ""
3306
+
3307
+ #: modules/gadsense/includes/class-mapi.php:867
3308
  msgid "Invalid response body while retrieving account alerts"
3309
  msgstr ""
3310
 
3311
+ #: modules/gadsense/includes/class-mapi.php:876
3312
  msgid "error while retrieving account alerts"
3313
  msgstr ""
3314
 
3315
+ #: modules/gadsense/includes/class-mapi.php:1031
3316
  msgid "No token provided. Token data needed to get account details."
3317
  msgstr ""
3318
 
3319
+ #: modules/gadsense/includes/class-mapi.php:1095
3320
  msgid "An error occurred while requesting account details."
3321
  msgstr ""
3322
 
3323
+ #: modules/gadsense/includes/class-mapi.php:1320
3324
+ #: modules/gadsense/includes/class-network-adsense.php:384
3325
+ msgctxt "AdSense ad type"
3326
+ msgid "Matched Content"
3327
+ msgstr ""
3328
+
3329
+ #: modules/gadsense/includes/class-mapi.php:1323
3330
+ #: modules/gadsense/includes/class-network-adsense.php:385
3331
+ msgctxt "AdSense ad type"
3332
+ msgid "In-article"
3333
+ msgstr ""
3334
+
3335
+ #: modules/gadsense/includes/class-mapi.php:1325
3336
+ #: modules/gadsense/includes/class-network-adsense.php:386
3337
+ msgctxt "AdSense ad type"
3338
+ msgid "In-feed"
3339
+ msgstr ""
3340
+
3341
+ #: modules/gadsense/includes/class-mapi.php:1330
3342
+ #: modules/gadsense/includes/class-network-adsense.php:387
3343
+ msgctxt "AdSense ad type"
3344
+ msgid "Display"
3345
+ msgstr ""
3346
+
3347
+ #: modules/gadsense/includes/class-mapi.php:1332
3348
+ #: modules/gadsense/includes/class-network-adsense.php:388
3349
+ msgctxt "AdSense ad type"
3350
+ msgid "Link"
3351
+ msgstr ""
3352
+
3353
+ #: modules/gadsense/includes/class-mapi.php:1480
3354
  #, php-format
3355
  msgid ""
3356
  "There are one or more warnings about the currently linked AdSense account. "
3359
 
3360
  #. 1:A link to the settings page
3361
  #. 2:The name of an ad network
3362
+ #: modules/gadsense/includes/class-mapi.php:1567
3363
  #, php-format
3364
  msgid ""
3365
  "Please try to <a href=\"%1$s\" target=\"_blank\">reconnect to your %2$s "
3366
  "account</a>."
3367
  msgstr ""
3368
 
3369
+ #: modules/gadsense/includes/class-adsense-report.php:472
3370
+ #: modules/gadsense/includes/class-adsense-report.php:498
3371
+ msgid "Never"
3372
+ msgstr ""
3373
+
3374
+ #: modules/gadsense/includes/class-gadsense-data.php:40
3375
+ msgid "Auto"
3376
+ msgstr ""
3377
+
3378
  #: modules/gadsense/includes/class-network-adsense.php:34
3379
  msgid "AdSense account"
3380
  msgstr ""
3442
  msgstr ""
3443
 
3444
  #: modules/gadsense/includes/class-network-adsense.php:194
3445
+ #: modules/gadsense/admin/views/connect-adsense.php:43
3446
  msgid ""
3447
  "Insert the AdSense header code used for verification and the Auto Ads "
3448
  "feature."
3460
  "appear in random places</strong>."
3461
  msgstr ""
3462
 
 
 
 
 
3463
  #: modules/gadsense/includes/class-network-adsense.php:203
3464
  msgid "Auto ads on AMP pages"
3465
  msgstr ""
3497
  "use the full width</a> of your visitor's mobile device screen"
3498
  msgstr ""
3499
 
3500
+ #: modules/gadsense/includes/class-ad-type-adsense.php:34
3501
+ msgid "AdSense ad"
3502
+ msgstr ""
3503
+
3504
+ #: modules/gadsense/includes/class-ad-type-adsense.php:35
3505
+ msgid "Use ads from your Google AdSense account"
3506
+ msgstr ""
3507
+
3508
+ #: modules/gadsense/includes/class-ad-type-adsense.php:91
3509
+ #: modules/gadsense/admin/views/adsense-account.php:83
3510
+ msgid "The Publisher ID has an incorrect format. (must start with \"pub-\")"
3511
+ msgstr ""
3512
+
3513
+ #: modules/gadsense/includes/class-ad-type-adsense.php:132
3514
+ msgid "Your AdSense Publisher ID is missing."
3515
+ msgstr ""
3516
+
3517
+ #: modules/gadsense/admin/dummy.php:61
3518
+ msgid "Dummy Account Id"
3519
+ msgstr ""
3520
+
3521
+ #: modules/gadsense/admin/admin.php:121
3522
+ #, php-format
3523
+ msgid ""
3524
+ "Responsive AdSense ads don’t work reliably with <em>Position</em> set to "
3525
+ "left or right. Either switch the <em>Type</em> to \"normal\" or follow <a "
3526
+ "href=\"%s\" target=\"_blank\">this tutorial</a> if you want the ad to be "
3527
+ "wrapped in text."
3528
+ msgstr ""
3529
+
3530
+ #: modules/gadsense/admin/admin.php:127
3531
+ #, php-format
3532
+ msgid ""
3533
+ "<a href=\"%s\" target=\"_blank\">Install the free AdSense In-feed add-on</a> "
3534
+ "in order to place ads between posts."
3535
+ msgstr ""
3536
+
3537
+ #: modules/gadsense/admin/admin.php:134
3538
+ #, php-format
3539
+ msgid ""
3540
+ "Use the <a href=\"%s\" target=\"_blank\">Responsive add-on</a> in order to "
3541
+ "define the exact size for each browser width or choose between horizontal, "
3542
+ "vertical, or rectangle formats."
3543
+ msgstr ""
3544
+
3545
+ #: modules/gadsense/admin/admin.php:182
3546
+ #, php-format
3547
+ msgid ""
3548
+ "The AdSense verification and Auto ads code should be set up in the <a "
3549
+ "href=\"%s\">AdSense settings</a>. Click on the following button to enable it "
3550
+ "now."
3551
+ msgstr ""
3552
+
3553
+ #: modules/gadsense/admin/admin.php:183
3554
+ msgid "Activate"
3555
+ msgstr ""
3556
+
3557
+ #: modules/privacy/classes/plugin.php:149
3558
+ msgid "Show all ads even without consent."
3559
+ msgstr ""
3560
+
3561
+ #: modules/privacy/classes/plugin.php:150
3562
+ msgid "Cookie"
3563
+ msgstr ""
3564
+
3565
+ #: modules/privacy/admin/admin.php:63
3566
+ msgid "Privacy"
3567
+ msgstr ""
3568
+
3569
+ #: modules/privacy/admin/admin.php:84
3570
+ msgid "Enable Privacy module"
3571
+ msgstr ""
3572
+
3573
+ #: modules/privacy/admin/admin.php:87
3574
+ msgid "Consent method"
3575
+ msgstr ""
3576
+
3577
+ #: modules/ad-blocker/admin/admin.php:96
3578
+ msgid "Ad blocker fix"
3579
+ msgstr ""
3580
+
3581
+ #: modules/ad-blocker/admin/admin.php:150
3582
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:372
3583
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
3584
+ msgstr ""
3585
+
3586
+ #: modules/ad-blocker/admin/admin.php:165
3587
+ msgid "The asset folder was rebuilt successfully"
3588
+ msgstr ""
3589
+
3590
+ #: modules/ad-blocker/admin/admin.php:226
3591
+ msgid "There is no writable upload folder"
3592
+ msgstr ""
3593
+
3594
+ #: modules/ad-blocker/admin/admin.php:255
3595
+ #, php-format
3596
+ msgid "Unable to rename \"%s\" directory"
3597
+ msgstr ""
3598
+
3599
+ #: modules/ad-blocker/admin/admin.php:271
3600
+ #: modules/ad-blocker/admin/admin.php:284
3601
+ #: modules/ad-blocker/admin/admin.php:301
3602
+ #, php-format
3603
+ msgid "Unable to copy assets to the \"%s\" directory"
3604
+ msgstr ""
3605
+
3606
+ #: modules/ad-blocker/admin/admin.php:334
3607
+ #: modules/ad-blocker/admin/admin.php:419
3608
+ #, php-format
3609
+ msgid "We do not have direct write access to the \"%s\" directory"
3610
+ msgstr ""
3611
+
3612
+ #: modules/ad-blocker/admin/admin.php:430
3613
+ #, php-format
3614
+ msgid "Unable to copy files to %s"
3615
+ msgstr ""
3616
+
3617
  #. Name of the plugin
3618
  #: modules/gutenberg/includes/class-gutenberg.php:78
3619
  msgid "Advanced Ads"
3620
  msgstr ""
3621
 
3622
+ #: modules/adblock-finder/admin/admin.php:16
3623
+ msgid "Ad Blocker"
3624
+ msgstr ""
3625
+
3626
+ #: modules/adblock-finder/admin/admin.php:23
3627
+ msgid "Ad blocker counter"
3628
+ msgstr ""
3629
+
3630
  #: modules/import-export/classes/import.php:66
3631
  msgid "Please enter XML content"
3632
  msgstr ""
3804
  msgid "Start import"
3805
  msgstr ""
3806
 
3807
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:176
3808
+ #, php-format
3809
+ msgid ""
3810
+ "The ads.txt file cannot be placed because the URL contains a subdirectory. "
3811
+ "You need to make the file available at %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3812
  msgstr ""
3813
 
3814
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:187
3815
+ #, php-format
3816
+ msgid "The file is available on %s."
3817
  msgstr ""
3818
 
3819
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:191
3820
+ msgid "The file was not created."
 
 
 
3821
  msgstr ""
3822
 
3823
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:197
3824
+ msgid "Find the solution here"
3825
  msgstr ""
3826
 
3827
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:208
3828
+ msgid "Import & Replace"
 
 
3829
  msgstr ""
3830
 
3831
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:210
3832
  msgid ""
3833
+ "Move the content of the existing ads.txt file into Advanced Ads and remove "
3834
+ "it."
3835
  msgstr ""
3836
 
3837
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:217
3838
+ #: modules/ads-txt/admin/views/setting-additional-content.php:4
3839
  #, php-format
3840
+ msgid "An error occured: %s."
 
 
3841
  msgstr ""
3842
 
3843
+ #. %s the line that may need to be added manually
3844
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:230
3845
+ #, php-format
3846
  msgid ""
3847
+ "If your site is located on a subdomain, you need to add the following line "
3848
+ "to the ads.txt file of the root domain: %s"
3849
  msgstr ""
3850
 
3851
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:345
3852
+ msgid "The ads.txt is now managed with Advanced Ads."
 
 
3853
  msgstr ""
3854
 
3855
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:390
3856
+ msgid "Not the main blog"
3857
  msgstr ""
3858
 
3859
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:419
3860
+ msgid "Could not delete the existing ads.txt file"
3861
  msgstr ""
3862
 
3863
+ #: modules/ads-txt/admin/class-advanced-ads-ads-txt-admin.php:422
3864
+ msgid "Could not find the existing ads.txt file"
 
 
3865
  msgstr ""
3866
 
3867
  #: modules/gadsense/admin/views/adsense-account.php:29
3901
  msgid "Get a free AdSense account"
3902
  msgstr ""
3903
 
3904
+ #: modules/gadsense/admin/views/adsense-account.php:151
3905
+ msgid "How to choose specific positions for AdSense ad units"
3906
+ msgstr ""
3907
+
3908
  #. %1$s is the opening link tag to our manual; %2$s is the appropriate closing link tag; %3$s is the opening link tag to our help forum; %4$s is the appropriate closing link tag
3909
+ #: modules/gadsense/admin/views/adsense-account.php:155
3910
  #, php-format
3911
  msgid ""
3912
  "Problems with AdSense? Check out the %1$smanual%2$s or %3$sask here%4$s."
3913
  msgstr ""
3914
 
3915
+ #: modules/gadsense/admin/views/adsense-account.php:163
3916
+ #: modules/gadsense/admin/views/external-ads-links.php:38
3917
  msgid "Can not connect AdSense account. PHP version is too low."
3918
  msgstr ""
3919
 
3920
+ #: modules/gadsense/admin/views/external-ads-list.php:34
3921
+ #: modules/gadsense/admin/views/external-ads-list.php:78
3922
+ msgid "Update the ad units list"
3923
+ msgstr ""
3924
+
3925
+ #: modules/gadsense/admin/views/external-ads-list.php:46
3926
+ #: modules/gadsense/admin/views/external-ads-list.php:56
3927
+ msgctxt "AdSense ad"
3928
+ msgid "Slot ID"
3929
+ msgstr ""
3930
+
3931
+ #: modules/gadsense/admin/views/external-ads-list.php:47
3932
+ #: modules/gadsense/admin/views/external-ads-list.php:57
3933
+ msgctxt "AdSense ad"
3934
+ msgid "Type"
3935
+ msgstr ""
3936
+
3937
+ #: modules/gadsense/admin/views/external-ads-list.php:48
3938
+ #: modules/gadsense/admin/views/external-ads-list.php:58
3939
+ msgid "Size"
3940
+ msgstr ""
3941
+
3942
+ #: modules/gadsense/admin/views/external-ads-list.php:65
3943
+ msgid "No active ad units found"
3944
+ msgstr ""
3945
+
3946
+ #: modules/gadsense/admin/views/external-ads-list.php:67
3947
+ msgid "Show all ad units"
3948
+ msgstr ""
3949
+
3950
+ #: modules/gadsense/admin/views/external-ads-list.php:76
3951
+ msgid "No ad units found"
3952
+ msgstr ""
3953
+
3954
+ #: modules/gadsense/admin/views/external-ads-list.php:102
3955
+ msgid "Get the code for this ad"
3956
+ msgstr ""
3957
+
3958
+ #: modules/gadsense/admin/views/external-ads-list.php:107
3959
+ msgid "Ad can't be imported, click for details"
3960
+ msgstr ""
3961
+
3962
+ #: modules/gadsense/admin/views/external-ads-list.php:119
3963
+ msgid "Unrecognized ad code"
3964
+ msgstr ""
3965
+
3966
+ #: modules/gadsense/admin/views/external-ads-list.php:125
3967
+ msgid "This ad type can currently not be imported from AdSense."
3968
+ msgstr ""
3969
+
3970
+ #: modules/gadsense/admin/views/external-ads-list.php:128
3971
+ msgid "You can proceed with one of the following solutions"
3972
+ msgstr ""
3973
+
3974
+ #. 1: opening tag for AdSense account link 2: opening tag for a link to insert ad code 3: closing a tag
3975
+ #: modules/gadsense/admin/views/external-ads-list.php:134
3976
+ #, php-format
3977
+ msgid ""
3978
+ "%1$sCopy the code from your AdSense account%3$s and %2$sinsert a new AdSense "
3979
+ "code here%3$s."
3980
+ msgstr ""
3981
+
3982
+ #. 1: opening tag for a link to create an ad manually 2: closing a tag
3983
+ #: modules/gadsense/admin/views/external-ads-list.php:140
3984
+ #, php-format
3985
+ msgid ""
3986
+ "%1$sCreate an AdSense code manually%2$s: Select the <em>Normal</em> or <em>"
3987
+ "Responsive</em> type and the size."
3988
  msgstr ""
3989
 
3990
+ #: modules/gadsense/admin/views/external-ads-list.php:147
3991
+ msgid "Choose a different ad from your AdSense account above."
3992
+ msgstr ""
3993
+
3994
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:53
3995
  msgid "The ad details couldn't be retrieved from the ad code"
3996
  msgstr ""
3997
 
3998
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:54
3999
  msgid ""
4000
  "Warning: The AdSense account from this code does not match the one set in "
4001
  "the Advanced Ads options."
4002
  msgstr ""
4003
 
4004
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:62
4005
  msgid ""
4006
  "Copy the ad code from your AdSense account, paste it into the area below and "
4007
  "click on <em>Get details</em>."
4008
  msgstr ""
4009
 
4010
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:64
4011
  msgid "Get details"
4012
  msgstr ""
4013
 
4014
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:65
4015
  msgid "cancel"
4016
  msgstr ""
4017
 
4018
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:67
4019
  msgid "connect to your AdSense account"
4020
  msgstr ""
4021
 
4022
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:82
4023
  msgid "Ad Slot ID"
4024
  msgstr ""
4025
 
4026
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:87
4027
  #, php-format
4028
  msgid "Publisher ID: %s"
4029
  msgstr ""
4030
 
4031
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:91
4032
  msgid ""
4033
  "The ad slot ID is either a number or empty and not the same as the publisher "
4034
  "ID."
4035
  msgstr ""
4036
 
4037
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:102
4038
  #, php-format
4039
  msgid "Please <a href=\"%s\" target=\"_blank\">change it here</a>."
4040
  msgstr ""
4041
 
4042
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:108
4043
  msgid "Normal"
4044
  msgstr ""
4045
 
4046
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:110
4047
  msgid "Responsive (Matched Content)"
4048
  msgstr ""
4049
 
4050
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:111
4051
  msgid "Link ads"
4052
  msgstr ""
4053
 
4054
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:112
4055
  msgid "Link ads (Responsive)"
4056
  msgstr ""
4057
 
4058
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:113
4059
+ msgid "In-article"
4060
  msgstr ""
4061
 
4062
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:114
4063
+ msgid "In-feed"
4064
  msgstr ""
4065
 
4066
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:119
4067
  msgid "Resizing"
4068
  msgstr ""
4069
 
4070
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:128
4071
  msgid "Layout"
4072
  msgstr ""
4073
 
4074
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:133
4075
  msgid "Layout-Key"
4076
  msgstr ""
4077
 
4078
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:138
4079
  msgid "Clearfix"
4080
  msgstr ""
4081
 
4082
+ #: modules/gadsense/admin/views/adsense-ad-parameters.php:141
4083
  msgid "Enable this box if responsive ads cover something on your site"
4084
  msgstr ""
4085
 
4086
+ #. 1: The name of an ad network.
4087
+ #: modules/gadsense/admin/views/external-ads-links.php:12
4088
+ #, php-format
4089
+ msgid "Insert new %1$s code"
4090
+ msgstr ""
4091
+
4092
+ #: modules/gadsense/admin/views/external-ads-links.php:18
4093
+ msgid "Get ad code from your linked account"
4094
+ msgstr ""
4095
+
4096
+ #. 1: The name of an ad network.
4097
+ #: modules/gadsense/admin/views/external-ads-links.php:24
4098
+ #, php-format
4099
+ msgid "Set up %1$s code manually"
4100
+ msgstr ""
4101
+
4102
+ #. 1: The name of an ad network.
4103
+ #: modules/gadsense/admin/views/external-ads-links.php:31
4104
+ #, php-format
4105
+ msgid "Connect to %1$s"
4106
+ msgstr ""
4107
+
4108
  #: modules/gadsense/admin/views/connect-adsense.php:35
4109
  msgid "Please enter the confirmation code."
4110
  msgstr ""
4111
 
4112
+ #. 1: opening a tag to open Google Adsense modal 2: closing a tag
4113
  #: modules/gadsense/admin/views/connect-adsense.php:39
4114
+ #, php-format
4115
+ msgid "This is not the correct confirmation code. %1$sPlease try again%2$s."
4116
+ msgstr ""
4117
+
4118
+ #: modules/gadsense/admin/views/connect-adsense.php:45
4119
  msgid "Submit code"
4120
  msgstr ""
4121
 
4122
+ #: modules/gadsense/admin/views/connect-adsense.php:53
4123
  msgid "Cannot access your account information."
4124
  msgstr ""
4125
 
4126
+ #: modules/gadsense/admin/views/connect-adsense.php:59
4127
  msgid "Please select an account"
4128
  msgstr ""
4129
 
4130
+ #: modules/gadsense/admin/views/connect-adsense.php:64
4131
  msgid "Use this account"
4132
  msgstr ""
4133
 
4134
+ #: modules/gadsense/admin/views/auto-ads-video.php:4
4135
+ msgid "How to enable Auto ads in 30 seconds (video tutorial)"
 
 
 
 
 
 
4136
  msgstr ""
4137
 
4138
+ #: modules/privacy/admin/views/setting-consent-method.php:12
4139
+ msgid "Value"
 
 
4140
  msgstr ""
4141
 
4142
+ #: modules/privacy/admin/views/setting-consent-method.php:18
4143
+ msgid "Show non-personalized AdSense ads until consent is given."
 
 
4144
  msgstr ""
4145
 
4146
+ #: modules/privacy/admin/views/setting-enable.php:5
4147
+ msgid ""
4148
+ "Your users’ consent might get cached and show ads to users who didn’t give "
4149
+ "their consent yet. "
4150
  msgstr ""
4151
 
4152
+ #: modules/privacy/admin/views/setting-enable.php:6
4153
+ #, php-format
4154
+ msgid ""
4155
+ "Cache-busting in <a href=\"%s\" target=\"_blank\">Advanced Ads Pro</a> "
4156
+ "solves that."
4157
  msgstr ""
4158
 
4159
+ #: modules/privacy/admin/views/setting-ad-ignore-consent.php:2
4160
+ msgid "privacy"
 
 
4161
  msgstr ""
4162
 
4163
+ #: modules/privacy/admin/views/setting-ad-ignore-consent.php:6
4164
+ #, php-format
4165
+ msgid ""
4166
+ "Ignore <a href=\"%s\">general Privacy settings</a> and display the ad even "
4167
+ "without consent."
4168
  msgstr ""
4169
 
4170
+ #: modules/ad-blocker/admin/views/rebuild_form.php:1
4171
+ msgid "Ad blocker file folder"
 
4172
  msgstr ""
4173
 
4174
+ #: modules/ad-blocker/admin/views/rebuild_form.php:10
4175
+ msgid "Upload folder is not writable"
4176
  msgstr ""
4177
 
4178
+ #: modules/ad-blocker/admin/views/rebuild_form.php:23
4179
+ msgid "Asset path"
4180
  msgstr ""
4181
 
4182
+ #: modules/ad-blocker/admin/views/rebuild_form.php:27
4183
+ msgid "Asset URL"
4184
  msgstr ""
4185
 
4186
+ #: modules/ad-blocker/admin/views/rebuild_form.php:31
4187
+ msgid "Rename assets"
4188
  msgstr ""
4189
 
4190
+ #: modules/ad-blocker/admin/views/rebuild_form.php:34
4191
+ msgid "Check if you want to change the names of the assets"
4192
  msgstr ""
4193
 
4194
+ #: modules/ad-blocker/admin/views/rebuild_form.php:43
4195
+ #, php-format
4196
+ msgid ""
4197
+ "Please, rebuild the asset folder. All assets will be located in <strong>"
4198
+ "%s</strong>"
4199
  msgstr ""
4200
 
4201
+ #: modules/ad-blocker/admin/views/rebuild_form.php:46
4202
+ msgid "Rebuild asset folder"
4203
  msgstr ""
4204
 
4205
+ #: modules/ad-blocker/admin/views/setting-use-adblocker.php:4
4206
  msgid ""
4207
+ "The ad block disguise can only be set by the super admin on the main site in "
4208
+ "the network."
4209
  msgstr ""
4210
 
4211
+ #: modules/ad-blocker/admin/views/setting-use-adblocker.php:6
4212
  msgid ""
4213
+ "Prevents ad block software from breaking your website when blocking asset "
4214
+ "files (.js, .css)."
4215
  msgstr ""
4216
 
4217
+ #: modules/ad-blocker/admin/views/setting-use-adblocker.php:8
4218
+ #, php-format
4219
  msgid ""
4220
+ "Learn how to display alternative content to ad block users <a href=\"%s\" "
4221
+ "target=\"_blank\">in the manual</a>."
 
 
 
 
4222
  msgstr ""
4223
 
4224
+ #: modules/adblock-finder/admin/views/setting-ga.php:2
 
4225
  msgid ""
4226
+ "Want to know how many of your visitors are using an ad blocker? Enter your "
4227
+ "Google Analytics property ID above to count them."
4228
  msgstr ""
4229
 
4230
+ #: modules/ads-txt/admin/views/setting-additional-content.php:2
4231
+ msgid ""
4232
+ "Additional records to add to the file, one record per line. AdSense is added "
4233
+ "automatically."
4234
  msgstr ""
4235
 
4236
+ #: modules/ads-txt/admin/views/setting-additional-content.php:5
4237
+ msgid "Check for problems"
4238
  msgstr ""
4239
 
4240
+ #: modules/ads-txt/admin/views/setting-create.php:19
4241
+ msgid "Generate a single ads.txt file for all sites in the multisite network."
 
 
4242
  msgstr ""
4243
 
4244
+ #: modules/ads-txt/admin/views/setting-create.php:27
 
4245
  msgid ""
4246
+ "Usually, this should be enabled on the main site of the network - often the "
4247
+ "one without a subdomain or subdirectory."
4248
  msgstr ""
4249
 
4250
  #. Description of the plugin
modules/ads-txt/includes/class-advanced-ads-ads-txt-utils.php CHANGED
@@ -73,7 +73,7 @@ class Advanced_Ads_Ads_Txt_Utils {
73
 
74
  // Example: `one.com.au'.
75
  $suffix_and_tld = implode( '.', array_slice( $host_parts, 1 ) );
76
- if ( in_array( $suffix_and_tld, array( 'com.au', 'com.br' ) ) ) {
77
  return false;
78
  }
79
 
73
 
74
  // Example: `one.com.au'.
75
  $suffix_and_tld = implode( '.', array_slice( $host_parts, 1 ) );
76
+ if ( in_array( $suffix_and_tld, array( 'com.au', 'com.br', 'com.pl' ) ) ) {
77
  return false;
78
  }
79
 
modules/gadsense/admin/admin.php CHANGED
@@ -190,13 +190,13 @@ class Advanced_Ads_AdSense_Admin {
190
  * @param type $hide_idle Whether to hide idle ads.
191
  */
192
  public static function get_mapi_ad_selector( $hide_idle_ads = true ) {
193
- global $closeable, $use_dashicons, $network, $ad_units, $unsupported_ad_type_link, $display_slot_id;
194
  $closeable = true;
195
  $use_dashicons = false;
196
  $network = Advanced_Ads_Network_Adsense::get_instance();
197
  $ad_units = $network->get_external_ad_units();
198
- $unsupported_ad_type_link = Advanced_Ads_AdSense_MAPI::UNSUPPORTED_TYPE_LINK;
199
  $display_slot_id = true;
 
200
 
201
  require_once GADSENSE_BASE_PATH . 'admin/views/external-ads-list.php';
202
  // require_once GADSENSE_BASE_PATH . 'admin/views/external-ads-adsense.php';
190
  * @param type $hide_idle Whether to hide idle ads.
191
  */
192
  public static function get_mapi_ad_selector( $hide_idle_ads = true ) {
193
+ global $closeable, $use_dashicons, $network, $ad_units, $display_slot_id;
194
  $closeable = true;
195
  $use_dashicons = false;
196
  $network = Advanced_Ads_Network_Adsense::get_instance();
197
  $ad_units = $network->get_external_ad_units();
 
198
  $display_slot_id = true;
199
+ $pub_id = Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id();
200
 
201
  require_once GADSENSE_BASE_PATH . 'admin/views/external-ads-list.php';
202
  // require_once GADSENSE_BASE_PATH . 'admin/views/external-ads-adsense.php';
modules/gadsense/admin/assets/js/adsense.js CHANGED
@@ -54,8 +54,7 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
54
  var elmData = jQuery(elm).data('refresh');
55
  if (elmData){
56
  elmData = typeof(elmData) === 'string' ? JSON.parse(elmData) : elmData;
57
- var unit_code = jQuery('input#unit-code').val();
58
- elmData.filter_value = unit_code;
59
  elmData.requires_refresh = true;
60
  jQuery(elm).data('refresh', elmData);
61
  Advanced_Ads_Adsense_Helper.process_dashboard(elm);
@@ -166,6 +165,7 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
166
  // jQuery( '#mapi-get-adcode,#mapi-get-adunits' ).prop( 'disabled', true );
167
  // }
168
  // }
 
169
  that.closeAdSelector();
170
 
171
  } else {
@@ -214,7 +214,7 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
214
  if (undefined !== theAd.slotId && '' != theAd.pubId) {
215
  theAd.display = adByGoogle.css( 'display' );
216
  theAd.format = adByGoogle.attr( 'data-ad-format' );
217
- theAd.layout = adByGoogle.attr( 'data-ad-layout' ); // for InFeed and InArticle
218
  theAd.layout_key = adByGoogle.attr( 'data-ad-layout-key' ); // for InFeed
219
  theAd.style = adByGoogle.attr( 'style' ) || '';
220
 
@@ -250,14 +250,14 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
250
  theAd.type = 'matched-content';
251
  }
252
 
253
- /* InArticle & InFeed ads */
254
  else if ('undefined' != typeof(theAd.format) && 'fluid' == theAd.format) {
255
 
256
- // InFeed
257
  if('undefined' != typeof(theAd.layout) && 'in-article' == theAd.layout){
258
  theAd.type = 'in-article';
259
  } else {
260
- // InArticle
261
  theAd.type = 'in-feed';
262
  }
263
  }
@@ -353,7 +353,7 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
353
  }
354
  jQuery( '.advads-adsense-code' ).hide();
355
  jQuery( '.advads-adsense-show-code' ).show();
356
- jQuery( '#mapi-insert-code' ).show();
357
  var SNT = this.getCustomInputs();
358
  SNT.css( 'display', 'block' );
359
  }
@@ -543,8 +543,10 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
543
  var $hr1 = $div1.next();
544
  var $label2 = $hr1.next();
545
  var $div2 = $label2.next();
 
 
546
 
547
- var $elems = $div1.add( $label1 ).add( $hr1 ).add( $label2 ).add( $div2 );
548
  return $elems;
549
  }
550
 
@@ -603,6 +605,20 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
603
  if (AdvancedAdsAdmin.AdImporter.highlightSelectedRowInExternalAdsList()){
604
  AdvancedAdsAdmin.AdImporter.openExternalAdsList();
605
  that.preventCloseAdSelector = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
606
  }
607
  else{
608
  // no adsense ad with this slot id was found
@@ -612,7 +628,30 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork{
612
  }
613
  });
614
 
615
- jQuery( document ).on('change', '#unit-type, #unit-code', function (ev) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
616
  that.checkAdSlotId(this);
617
  });
618
 
54
  var elmData = jQuery(elm).data('refresh');
55
  if (elmData){
56
  elmData = typeof(elmData) === 'string' ? JSON.parse(elmData) : elmData;
57
+ elmData.filter_value = slotId.split(':')[1]; // get the unit id from the slot id
 
58
  elmData.requires_refresh = true;
59
  jQuery(elm).data('refresh', elmData);
60
  Advanced_Ads_Adsense_Helper.process_dashboard(elm);
165
  // jQuery( '#mapi-get-adcode,#mapi-get-adunits' ).prop( 'disabled', true );
166
  // }
167
  // }
168
+ jQuery('[data-slotid="'+slotID+'"]').children('.unittype').text(response.type);
169
  that.closeAdSelector();
170
 
171
  } else {
214
  if (undefined !== theAd.slotId && '' != theAd.pubId) {
215
  theAd.display = adByGoogle.css( 'display' );
216
  theAd.format = adByGoogle.attr( 'data-ad-format' );
217
+ theAd.layout = adByGoogle.attr( 'data-ad-layout' ); // for In-feed and In-article
218
  theAd.layout_key = adByGoogle.attr( 'data-ad-layout-key' ); // for InFeed
219
  theAd.style = adByGoogle.attr( 'style' ) || '';
220
 
250
  theAd.type = 'matched-content';
251
  }
252
 
253
+ /* In-article & In-feed ads */
254
  else if ('undefined' != typeof(theAd.format) && 'fluid' == theAd.format) {
255
 
256
+ // In-article
257
  if('undefined' != typeof(theAd.layout) && 'in-article' == theAd.layout){
258
  theAd.type = 'in-article';
259
  } else {
260
+ // In-feed
261
  theAd.type = 'in-feed';
262
  }
263
  }
353
  }
354
  jQuery( '.advads-adsense-code' ).hide();
355
  jQuery( '.advads-adsense-show-code' ).show();
356
+ jQuery( '.mapi-insert-code' ).show();
357
  var SNT = this.getCustomInputs();
358
  SNT.css( 'display', 'block' );
359
  }
543
  var $hr1 = $div1.next();
544
  var $label2 = $hr1.next();
545
  var $div2 = $label2.next();
546
+ var $layoutKey = jQuery( '#ad-layout-key' ).closest( 'div' );
547
+ var $layoutKeyLabel = $layoutKey.prev( '#advads-adsense-layout-key' );
548
 
549
+ var $elems = $div1.add( $label1 ).add( $hr1 ).add( $label2 ).add( $div2 ).add( $layoutKey ).add( $layoutKeyLabel );
550
  return $elems;
551
  }
552
 
605
  if (AdvancedAdsAdmin.AdImporter.highlightSelectedRowInExternalAdsList()){
606
  AdvancedAdsAdmin.AdImporter.openExternalAdsList();
607
  that.preventCloseAdSelector = true;
608
+
609
+ // save the manually added ad code to the AdSense settings
610
+ wp.ajax.post('advads-mapi-save-manual-code', {
611
+ raw_code: encodeURIComponent(rawContent),
612
+ parsed_code: parseResult,
613
+ nonce: AdsenseMAPI.nonce
614
+ })
615
+ .fail(function (r) {
616
+ var $notice = jQuery('<div>').addClass('notice notice-error').html(jQuery('<p>').text(r.responseJSON.data.message));
617
+ jQuery('#post').before($notice);
618
+ jQuery('body html').animate({
619
+ scrollTop: $notice.offset().top
620
+ }, 200);
621
+ });
622
  }
623
  else{
624
  // no adsense ad with this slot id was found
628
  }
629
  });
630
 
631
+ jQuery(document).on('gadsenseUnitChanged', function () {
632
+ var $row = jQuery('tr[data-slotid$="' + jQuery('#unit-code').val() + '"]'),
633
+ type = window.adsenseAdvancedAdsJS.ad_types.display;
634
+
635
+ switch (jQuery('#unit-type').val()) {
636
+ case 'matched-content':
637
+ type = window.adsenseAdvancedAdsJS.ad_types.matched_content;
638
+ break;
639
+ case 'link':
640
+ case 'link-responsive':
641
+ type = window.adsenseAdvancedAdsJS.ad_types.link;
642
+ break;
643
+ case 'in-article':
644
+ type = window.adsenseAdvancedAdsJS.ad_types.in_article;
645
+ break;
646
+ case 'in-feed':
647
+ type = window.adsenseAdvancedAdsJS.ad_types.in_feed;
648
+ break;
649
+ }
650
+
651
+ $row.children('.unittype').text(type);
652
+ });
653
+
654
+ jQuery( document ).on('change', '#unit-type, #unit-code', function () {
655
  that.checkAdSlotId(this);
656
  });
657
 
modules/gadsense/admin/assets/js/connect-adsense.js CHANGED
@@ -52,10 +52,10 @@
52
 
53
  var that = this;
54
 
55
- // Close the modal.
56
  $( document ).on( 'click', '#gadsense-modal .dashicons-dismiss', function(){
57
  $( '#mapi-code' ).val( '' );
58
- $( '#gadsense-modal' ).css( 'display', 'none' );
59
  } );
60
 
61
  // Confirm code for account connection.
@@ -64,6 +64,7 @@
64
  var code = $( '#mapi-code' ).val();
65
  if ( '' == code ) return;
66
  $( '.gadsense-overlay' ).css( 'display', 'block' );
 
67
  var data = {
68
  action: 'advads_gadsense_mapi_confirm_code',
69
  code: code,
@@ -90,6 +91,15 @@
90
  $( '#mapi-code' ).val( '' );
91
  $( '#mapi-autoads' ).prop( 'checked', false );
92
  $( '#gadsense-modal-content-inner .dashicons-dismiss' ).trigger( 'click' );
 
 
 
 
 
 
 
 
 
93
  }
94
  },
95
  error:function(request, status, error){
@@ -265,4 +275,4 @@
265
  $( '#wpwrap' ).append( $( '#gadsense-modal' ) );
266
  });
267
 
268
- })(window.jQuery);
52
 
53
  var that = this;
54
 
55
+ // Close the modal and hide errors.
56
  $( document ).on( 'click', '#gadsense-modal .dashicons-dismiss', function(){
57
  $( '#mapi-code' ).val( '' );
58
+ $( '#gadsense-modal, #gadsense-modal-error' ).css( 'display', 'none' );
59
  } );
60
 
61
  // Confirm code for account connection.
64
  var code = $( '#mapi-code' ).val();
65
  if ( '' == code ) return;
66
  $( '.gadsense-overlay' ).css( 'display', 'block' );
67
+ $( '#gadsense-modal-error' ).hide();
68
  var data = {
69
  action: 'advads_gadsense_mapi_confirm_code',
70
  code: code,
91
  $( '#mapi-code' ).val( '' );
92
  $( '#mapi-autoads' ).prop( 'checked', false );
93
  $( '#gadsense-modal-content-inner .dashicons-dismiss' ).trigger( 'click' );
94
+ if ($.parseJSON(response.response_body).error === 'invalid_grant') {
95
+ $('#gadsense-modal-error').show();
96
+
97
+ $('#gadsense-reopen-connect').one('click', function (event) {
98
+ event.preventDefault();
99
+ $('#gadsense-modal-error').hide();
100
+ that.show();
101
+ });
102
+ }
103
  }
104
  },
105
  error:function(request, status, error){
275
  $( '#wpwrap' ).append( $( '#gadsense-modal' ) );
276
  });
277
 
278
+ })(window.jQuery);
modules/gadsense/admin/assets/js/mapi-settings.js CHANGED
@@ -79,12 +79,7 @@
79
  $( '#adsense #auto-adsense-settings-div' ).css( 'display', 'none' );
80
  $( '#adsense #full-adsense-settings-div' ).css( 'display', 'block' );
81
  $( '#adsense-id' ).after( $( '#connect-adsense' ) );
82
- } );
83
-
84
- $( document ).on( 'change', '#adsense-id', function(){
85
- if ( '' != $( this ).val().trim() ) {
86
- $( '#adsense #submit' ).parent().css( 'display', 'block' );
87
- }
88
  } );
89
 
90
  // Open the code confirmation modal.
@@ -142,7 +137,7 @@
142
  } );
143
 
144
  $( function(){
145
- if ( '' == $( '#adsense-id' ).val().trim() ) {
146
  $( '#adsense #submit' ).parent().css( 'display', 'none' );
147
  }
148
  } );
79
  $( '#adsense #auto-adsense-settings-div' ).css( 'display', 'none' );
80
  $( '#adsense #full-adsense-settings-div' ).css( 'display', 'block' );
81
  $( '#adsense-id' ).after( $( '#connect-adsense' ) );
82
+ $( '#adsense #submit' ).parent().show();
 
 
 
 
 
83
  } );
84
 
85
  // Open the code confirmation modal.
137
  } );
138
 
139
  $( function(){
140
+ if ( '' === $( '#adsense-id' ).val().trim() && $('#adsense-manual-config').is(':visible') ) {
141
  $( '#adsense #submit' ).parent().css( 'display', 'none' );
142
  }
143
  } );
modules/gadsense/admin/views/adsense-account.php CHANGED
@@ -143,7 +143,14 @@ $alerts_advads_messages = Advanced_Ads_Adsense_MAPI::get_adsense_alert_messages(
143
  #auto-adsense-settings-div .widget-col:first-child:after { top: auto; right: auto; bottom: -10px; left: 20px; display: inline-block; padding: 0px 5px 0px 5px; }
144
  }
145
  </style>
146
- <?php else : ?>
 
 
 
 
 
 
 
147
  <p><?php // translators: %1$s is the opening link tag to our manual; %2$s is the appropriate closing link tag; %3$s is the opening link tag to our help forum; %4$s is the appropriate closing link tag
148
  printf(__( 'Problems with AdSense? Check out the %1$smanual%2$s or %3$sask here%4$s.', 'advanced-ads' ),
149
  '<a href="' . ADVADS_URL . 'adsense-ads/#utm_source=advanced-ads&utm_medium=link&utm_campaign=adsense-manual-check" target="_blank">',
143
  #auto-adsense-settings-div .widget-col:first-child:after { top: auto; right: auto; bottom: -10px; left: 20px; display: inline-block; padding: 0px 5px 0px 5px; }
144
  }
145
  </style>
146
+ <?php
147
+ echo "<br/><br/><br/><hr>";
148
+ include ADVADS_BASE_PATH . 'modules/gadsense/admin/views/auto-ads-video.php';
149
+ ?><p>
150
+ <a href="<?php echo esc_url( ADVADS_URL ); ?>place-adsense-ad-unit-manually/#utm_source=advanced-ads&utm_medium=link&utm_campaign=adsense-manually" style="text-decoration: none;" target="_blank"><span class="dashicons dashicons-welcome-learn-more"></span>&nbsp;<?php
151
+ esc_attr_e( 'How to choose specific positions for AdSense ad units', 'advanced-ads' ); ?></a>
152
+ </p><?php
153
+ else : ?>
154
  <p><?php // translators: %1$s is the opening link tag to our manual; %2$s is the appropriate closing link tag; %3$s is the opening link tag to our help forum; %4$s is the appropriate closing link tag
155
  printf(__( 'Problems with AdSense? Check out the %1$smanual%2$s or %3$sask here%4$s.', 'advanced-ads' ),
156
  '<a href="' . ADVADS_URL . 'adsense-ads/#utm_source=advanced-ads&utm_medium=link&utm_campaign=adsense-manual-check" target="_blank">',
modules/gadsense/admin/views/adsense-ad-parameters.php CHANGED
@@ -41,11 +41,6 @@ $mapi_ad_codes['length'] = count( $mapi_ad_codes );
41
  AdsenseMAPI.pubId = '<?php echo $pub_id ?>';
42
  AdsenseMAPI.adStatus = '<?php echo $ad->status ?>';
43
  AdsenseMAPI.unsupportedUnits = <?php echo wp_json_encode( $mapi_options['unsupported_units'] ); ?>;
44
- AdsenseMAPI.unsupportedLink = '<?php echo Advanced_Ads_AdSense_MAPI::UNSUPPORTED_TYPE_LINK; ?>';
45
- AdsenseMAPI.unsupportedText = '<?php /**
46
- * translators: this is a label for an ad that we can currently not import from the AdSense account
47
- */
48
- esc_html_e( 'unsupported', 'advanced-ads' ); ?>';
49
  </script>
50
  <?php endif; // if ( $has_token ) ?>
51
 
@@ -115,8 +110,8 @@ if( $pub_id_errors ) : ?>
115
  <option value="matched-content" <?php selected( $unit_type, 'matched-content' ); ?>><?php _e( 'Responsive (Matched Content)', 'advanced-ads' ); ?></option>
116
  <option value="link" <?php selected( $unit_type, 'link' ); ?>><?php _e( 'Link ads', 'advanced-ads' ); ?></option>
117
  <option value="link-responsive" <?php selected( $unit_type, 'link-responsive' ); ?>><?php _e( 'Link ads (Responsive)', 'advanced-ads' ); ?></option>
118
- <option value="in-article" <?php selected( $unit_type, 'in-article' ); ?>><?php _e( 'InArticle', 'advanced-ads' ); ?></option>
119
- <option value="in-feed" <?php selected( $unit_type, 'in-feed' ); ?>><?php _e( 'InFeed', 'advanced-ads' ); ?></option>
120
  </select>
121
  <a href="<?php echo ADVADS_URL . 'adsense-ads/#utm_source=advanced-ads&utm_medium=link&utm_campaign=adsense-ad-types'; ?>" target="_blank"><?php _e( 'manual', 'advanced-ads' ); ?></a>
122
  </div>
@@ -129,13 +124,15 @@ if( $pub_id_errors ) : ?>
129
  <?php endforeach; ?>
130
  </select>
131
  </div>
 
132
  <label class="label advads-adsense-layout" <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?> id="advads-adsense-layout"><?php _e( 'Layout', 'advanced-ads' ); ?></label>
133
  <div <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?>>
134
  <input name="ad-layout" id="ad-layout" value="<?php echo isset( $layout ) ? $layout : ''; ?>"/>
135
  </div>
 
136
  <label class="label advads-adsense-layout-key" <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?> id="advads-adsense-layout-key"><?php _e( 'Layout-Key', 'advanced-ads' ); ?></label>
137
  <div <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?>>
138
- <input name="ad-layout-key" id="ad-layout-key" value="<?php echo isset( $layout_key ) ? $layout_key : ''; ?>"/>
139
  </div>
140
  <hr/>
141
  <label class="label clearfix-before" <?php if ( ! $is_responsive ) { echo 'style="display: none;"'; } ?>><?php _e( 'Clearfix', 'advanced-ads' ); ?></label>
41
  AdsenseMAPI.pubId = '<?php echo $pub_id ?>';
42
  AdsenseMAPI.adStatus = '<?php echo $ad->status ?>';
43
  AdsenseMAPI.unsupportedUnits = <?php echo wp_json_encode( $mapi_options['unsupported_units'] ); ?>;
 
 
 
 
 
44
  </script>
45
  <?php endif; // if ( $has_token ) ?>
46
 
110
  <option value="matched-content" <?php selected( $unit_type, 'matched-content' ); ?>><?php _e( 'Responsive (Matched Content)', 'advanced-ads' ); ?></option>
111
  <option value="link" <?php selected( $unit_type, 'link' ); ?>><?php _e( 'Link ads', 'advanced-ads' ); ?></option>
112
  <option value="link-responsive" <?php selected( $unit_type, 'link-responsive' ); ?>><?php _e( 'Link ads (Responsive)', 'advanced-ads' ); ?></option>
113
+ <option value="in-article" <?php selected( $unit_type, 'in-article' ); ?>><?php _e( 'In-article', 'advanced-ads' ); ?></option>
114
+ <option value="in-feed" <?php selected( $unit_type, 'in-feed' ); ?>><?php _e( 'In-feed', 'advanced-ads' ); ?></option>
115
  </select>
116
  <a href="<?php echo ADVADS_URL . 'adsense-ads/#utm_source=advanced-ads&utm_medium=link&utm_campaign=adsense-ad-types'; ?>" target="_blank"><?php _e( 'manual', 'advanced-ads' ); ?></a>
117
  </div>
124
  <?php endforeach; ?>
125
  </select>
126
  </div>
127
+ <hr>
128
  <label class="label advads-adsense-layout" <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?> id="advads-adsense-layout"><?php _e( 'Layout', 'advanced-ads' ); ?></label>
129
  <div <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?>>
130
  <input name="ad-layout" id="ad-layout" value="<?php echo isset( $layout ) ? $layout : ''; ?>"/>
131
  </div>
132
+ <hr>
133
  <label class="label advads-adsense-layout-key" <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?> id="advads-adsense-layout-key"><?php _e( 'Layout-Key', 'advanced-ads' ); ?></label>
134
  <div <?php if ( 'in-feed' !== $unit_type ) { echo 'style="display: none;"'; } ?>>
135
+ <input type="text" name="ad-layout-key" id="ad-layout-key" value="<?php echo isset( $layout_key ) ? $layout_key : ''; ?>"/>
136
  </div>
137
  <hr/>
138
  <label class="label clearfix-before" <?php if ( ! $is_responsive ) { echo 'style="display: none;"'; } ?>><?php _e( 'Clearfix', 'advanced-ads' ); ?></label>
modules/gadsense/admin/views/auto-ads-video.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="advads-auto-ads-links">
2
+ <a id="advads-auto-ads-video-link" style="cursor: pointer;">
3
+ <span class="dashicons dashicons-format-video"></span>&nbsp;<?php
4
+ esc_attr_e( 'How to enable Auto ads in 30 seconds (video tutorial)', 'advanced-ads' ); ?>
5
+ </a>
6
+ </div>
7
+ <script>
8
+ (function ($) {
9
+ var $videoLink = $('#advads-auto-ads-video-link');
10
+ $videoLink.click(function () {
11
+ $('<br class="clear"/><br/><iframe src="https://player.vimeo.com/video/381874350" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>').appendTo('#advads-auto-ads-links');
12
+ $(this).remove();
13
+ })
14
+ .children('.dashicons').css('line-height', $videoLink.css('line-height'));
15
+ })(jQuery)
16
+ </script>
modules/gadsense/admin/views/connect-adsense.php CHANGED
@@ -33,6 +33,12 @@ $auth_url = 'https://accounts.google.com/o/oauth2/v2/auth?scope=' .
33
  <div class="gadsense-modal-content-inner" data-content="confirm-code">
34
  <i class="dashicons dashicons-dismiss"></i>
35
  <label style="font-size:1.1em;font-weight:600;margin-bottom:.3em;display:block;"><?php _e( 'Please enter the confirmation code.', 'advanced-ads' ); ?></label>
 
 
 
 
 
 
36
  <input type="text" class="widefat" id="mapi-code" value="" />
37
  <p><label><input type="checkbox" value="1" id="mapi-autoads"<?php echo ( $options['page-level-enabled'] ) ? ' checked="checked"' : ''; ?> />&nbsp;<?php _e( 'Insert the AdSense header code used for verification and the Auto Ads feature.', 'advanced-ads' ); ?></label></p>
38
  <p class="submit">
33
  <div class="gadsense-modal-content-inner" data-content="confirm-code">
34
  <i class="dashicons dashicons-dismiss"></i>
35
  <label style="font-size:1.1em;font-weight:600;margin-bottom:.3em;display:block;"><?php _e( 'Please enter the confirmation code.', 'advanced-ads' ); ?></label>
36
+ <div class="gadsense-modal-error" id="gadsense-modal-error">
37
+ <?php
38
+ /* Translators: 1: opening a tag to open Google Adsense modal 2: closing a tag */
39
+ printf( esc_attr__( 'This is not the correct confirmation code. %1$sPlease try again%2$s.', 'advanced-ads' ), '<a href="#" id="gadsense-reopen-connect">', '</a>' );
40
+ ?>
41
+ </div>
42
  <input type="text" class="widefat" id="mapi-code" value="" />
43
  <p><label><input type="checkbox" value="1" id="mapi-autoads"<?php echo ( $options['page-level-enabled'] ) ? ' checked="checked"' : ''; ?> />&nbsp;<?php _e( 'Insert the AdSense header code used for verification and the Auto Ads feature.', 'advanced-ads' ); ?></label></p>
44
  <p class="submit">
modules/gadsense/admin/views/external-ads-links.php CHANGED
@@ -5,7 +5,7 @@
5
  */
6
  $is_account_connected = $network->is_account_connected();
7
  ?><p>
8
- <span id="mapi-insert-code">
9
 
10
  <a href="#"><?php
11
  /* translators: 1: The name of an ad network. */
@@ -13,11 +13,12 @@ $is_account_connected = $network->is_account_connected();
13
  </span>
14
  <?php if ( Advanced_Ads_Checks::php_version_minimum() ) : ?>
15
  <?php if ( $is_account_connected ) : ?>
16
- <span id="mapi-open-selector">
17
- <?php _e( 'or', 'advanced-ads' ); ?><a href="#" class="prevent-default"><?php _e( 'Get ad code from your linked account', 'advanced-ads' ); ?></a>
 
18
  </span>
19
  <?php if ($network->supports_manual_ad_setup()):?>
20
- <span id="mapi-close-selector-link"><?php
21
  _e( 'or', 'advanced-ads' ); ?><a href="#" class="prevent-default"><?php
22
  /* translators: 1: The name of an ad network. */
23
  printf(__( 'Set up %1$s code manually', 'advanced-ads' ), $network->get_display_name());
5
  */
6
  $is_account_connected = $network->is_account_connected();
7
  ?><p>
8
+ <span class="mapi-insert-code">
9
 
10
  <a href="#"><?php
11
  /* translators: 1: The name of an ad network. */
13
  </span>
14
  <?php if ( Advanced_Ads_Checks::php_version_minimum() ) : ?>
15
  <?php if ( $is_account_connected ) : ?>
16
+ <span class="mapi-open-selector">
17
+ <span class="mapi-optional-or"><?php _e( 'or', 'advanced-ads' ); ?></span>
18
+ <a href="#" class="prevent-default"><?php _e( 'Get ad code from your linked account', 'advanced-ads' ); ?></a>
19
  </span>
20
  <?php if ($network->supports_manual_ad_setup()):?>
21
+ <span class="mapi-close-selector-link"><?php
22
  _e( 'or', 'advanced-ads' ); ?><a href="#" class="prevent-default"><?php
23
  /* translators: 1: The name of an ad network. */
24
  printf(__( 'Set up %1$s code manually', 'advanced-ads' ), $network->get_display_name());
modules/gadsense/admin/views/external-ads-list.php CHANGED
@@ -1,8 +1,29 @@
1
  <?php
2
- global $external_ad_unit_id, $use_dashicons, $closeable, $display_slot_id;
 
 
 
 
 
 
 
 
 
 
 
3
 
4
- if (! isset($hide_idle_ads)) $hide_idle_ads = true;
5
- if (! isset($ad_units)) $ad_units = array();
 
 
 
 
 
 
 
 
 
 
6
 
7
  ?>
8
  <div id="mapi-wrap" class="aa-select-list">
@@ -10,10 +31,7 @@ if (! isset($ad_units)) $ad_units = array();
10
  <button type="button" id="mapi-close-selector" class="notice-dismiss"></button>
11
  <?php endif;?>
12
  <i id="mapi-toggle-idle" title="<?php esc_attr_e( 'Show inactive ads' , 'advanced-ads' ); ?>" class="dashicons dashicons-visibility mapiaction" data-mapiaction="toggleidle"></i>
13
- <?php if ( !empty( $ad_units ) ) : ?>
14
- <i class="aa-select-list-update dashicons dashicons-update mapiaction" data-mapiaction="updateList" style="color:#0085ba;cursor:pointer;font-size:20px;" title="<?php
15
- esc_attr_e( 'Update the ad units list', 'advanced-ads' ) ?>"></i>
16
- <?php endif; ?>
17
  <div id="mapi-loading-overlay" class="aa-select-list-loading-overlay">
18
  <img alt="..." src="<?php echo ADVADS_BASE_URL . 'admin/assets/img/loader.gif'; ?>" style="margin-top:8em;" />
19
  </div>
@@ -24,9 +42,6 @@ if (! isset($ad_units)) $ad_units = array();
24
  // TODO: make sure the div is not needed anymore, and what it's purpose is, then remove it, if possible
25
  ?>
26
  <div id="mapi-list-header" class="aa-select-list-header" style="display:none;">
27
- <?php if ($use_dashicons) :?>
28
- <span><?php echo esc_attr_x( 'Ad unit', 'AdSense ad', 'advanced-ads' ); ?></span>
29
- <?php endif; ?>
30
  <span><?php esc_html_e( 'Name', 'advanced-ads' ); ?></span>
31
  <?php if ($display_slot_id):?><span><?php echo esc_html_x( 'Slot ID', 'AdSense ad', 'advanced-ads' ); ?></span><?php endif;?>
32
  <span><?php echo esc_html_x( 'Type', 'AdSense ad', 'advanced-ads' ); ?></span>
@@ -37,9 +52,6 @@ if (! isset($ad_units)) $ad_units = array();
37
  <table class="widefat striped">
38
  <thead>
39
  <tr>
40
- <?php if ($use_dashicons) :?>
41
- <th><?php echo esc_attr_x( 'Ad unit', 'AdSense ad', 'advanced-ads' ); ?></th>
42
- <?php endif; ?>
43
  <th><?php esc_html_e( 'Name', 'advanced-ads' ); ?></th>
44
  <?php if ($display_slot_id):?><th><?php echo esc_html_x( 'Slot ID', 'AdSense ad', 'advanced-ads' ); ?></th><?php endif;?>
45
  <th><?php echo esc_html_x( 'Type', 'AdSense ad', 'advanced-ads' ); ?></th>
@@ -47,76 +59,92 @@ if (! isset($ad_units)) $ad_units = array();
47
  </tr>
48
  </thead>
49
  <tbody>
50
- <?php if ( empty( $ad_units ) ) : ?>
51
- <tr>
52
- <td colspan="5" style="text-align:center;">
53
- <?php esc_attr_e( 'No ad units found', 'advanced-ads' ) ?>
54
- <i class="dashicons dashicons-update mapiaction" data-mapiaction="updateList" style="color:#0085ba;cursor:pointer;font-size:20px;" title="<?php esc_attr_e( 'Update the ad units list', 'advanced-ads' ) ?>"></i>
55
- </td>
56
- </tr>
57
- <?php else :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  foreach ($ad_units as $ad_unit){
59
  $ad_unit->is_supported = $network->is_supported($ad_unit);
60
  }
61
  $sorted_adunits = Advanced_Ads_Ad_Network_Ad_Unit::sort_ad_units( $ad_units, $external_ad_unit_id);
62
  ?>
63
- <?php foreach ( $sorted_adunits as $unit ) :
64
- $unit_is_supported = $unit->is_supported;//$network->is_supported($unit);
65
- $unsupported_class = $unit_is_supported ? '' : ' disabled'; ?>
66
- <?php if ($use_dashicons):?>
67
- <tr data-slotid="<?php echo esc_attr( $unit->id ); ?>" data-active="<?php echo esc_attr( $unit->active ); ?>">
68
- <td>
69
- <i data-slotid="<?php echo esc_attr( $unit->id ); ?>" class="dashicons dashicons-download mapiaction<?php echo $unsupported_class; ?>" data-mapiaction="getCode" title="<?php esc_attr_e( 'Get the code for this ad', 'advanced-ads' ) ?>"></i>
70
- <i data-slotid="<?php echo esc_attr( $unit->id ); ?>" class="dashicons dashicons-update mapiaction" data-mapiaction="updateCode" title="<?php esc_attr_e( 'Update and get the code for this ad from Google', 'advanced-ads' ) ?>"></i>
71
- </td>
72
- <?php else: ?>
73
- <tr class="advads-clickable-row mapiaction" data-mapiaction="getCode" data-slotid="<?php echo esc_attr( $unit->id ); ?>" data-active="<?php echo esc_attr( $unit->active ); ?>">
74
- <?php endif;?>
75
- <td><?php echo $unit->name; ?></td>
76
- <?php if ($display_slot_id):?>
77
- <td class="unitcode"><?php
78
- if ( !$unit_is_supported ) {
79
- echo '<span class="unsupported"><span>' . esc_html( $unit->slot_id ) . '</span></span>';
80
- } else {
81
- echo '<span><span>' . esc_html( $unit->slot_id ) . '</span></span>';
82
- }
83
- ?></td>
84
- <?php endif;?>
85
- <td class="unittype"><?php
86
- if ( !$unit_is_supported ) {
87
- echo '<a href="' . esc_url( $unsupported_ad_type_link ) . '" target="_blank" data-type="' . esc_attr( Advanced_Ads_AdSense_MAPI::format_ad_data( $unit->display_type, 'type' ) ) . '">';
88
- esc_html_e( 'unsupported', 'advanced-ads' );
89
- echo '</a>';
90
- } else {
91
- echo Advanced_Ads_AdSense_MAPI::format_ad_data( $unit->display_type, 'type' );
92
- }
93
- ?></td>
94
- <td class="unitsize"><?php
95
- if ( !$unit_is_supported ) {
96
- echo '<a href="' . esc_url( $unsupported_ad_type_link ) . '" target="_blank" data-size="' . Advanced_Ads_AdSense_MAPI::format_ad_data( $unit->display_size, 'size' ) . '">';
97
- esc_html_e( 'unsupported', 'advanced-ads' );
98
- echo '</a>';
99
- } else {
100
- echo Advanced_Ads_AdSense_MAPI::format_ad_data( $unit->display_size, 'size' );
101
- }
102
- ?></td>
103
- </tr>
104
- <?php endforeach; ?>
105
  <?php endif; ?>
106
  </tbody>
107
  </table>
108
  </div>
 
 
 
109
 
110
- <p class="advads-error-message" id="remote-ad-code-error" style="display:none;"><strong><?php esc_attr_e( 'Unrecognized ad code', 'advanced-ads' ); ?></strong></p>
111
- <p class="advads-error-message" id="remote-ad-code-msg"></p>
112
- <div style="display:none;" id="remote-ad-unsupported-ad-type"><p><i class="dashicons dashicons-warning"></i><b class="advads-error-message"><?php
113
- esc_attr_e( 'This ad type can currently not be imported from AdSense.', 'advanced-ads' ) ?></b>&nbsp;<a href="<?php echo ADVADS_URL . 'adsense-ad-type-not-available/#utm_source=advanced-ads&utm_medium=link&utm_campaign=adsense-type-not-available'; ?>" target="_blank"><?php
114
- esc_attr_e( 'Learn more and help us to enable it here.', 'advanced-ads' ) ?></a></p>
115
- <?php esc_attr_e( 'In the meantime, you can use AdSense with one of these methods:', 'advanced-ads' ) ?>
116
- <ul>
117
- <li><?php _e( 'Click on <em>Insert new AdSense code</em> and copy the code from your AdSense account into it.', 'advanced-ads' ) ?></li>
118
- <li><?php _e( 'Create an ad on the fly. Just select the <em>Normal</em> or <em>Responsive</em> type and the size.', 'advanced-ads' ) ?></li>
119
- <li><?php _e( 'Choose a <em>Normal</em>, <em>Responsive</em> or <em>Link Unit</em> ad from your AdSense account.', 'advanced-ads' ) ?></li>
120
- </ul>
121
- </div>
122
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+ /**
3
+ * AdSense ad units table.
4
+ *
5
+ * @var bool $closeable
6
+ * @var bool $use_dashicons
7
+ * @var Advanced_Ads_Network_Adsense $network
8
+ * @var array $ad_units
9
+ * @var bool $display_slot_id
10
+ * @var string $pub_id
11
+ *
12
+ * @package AdvancedAds
13
+ */
14
 
15
+ global $external_ad_unit_id, $closeable, $display_slot_id;
16
+
17
+ if ( ! isset( $hide_idle_ads ) ) {
18
+ $hide_idle_ads = true;
19
+ }
20
+ if ( ! isset( $ad_units ) ) {
21
+ $ad_units = array();
22
+ }
23
+ $only_inactive_units = ! empty( $ad_units ) && empty( array_filter( $ad_units,
24
+ function ( Advanced_Ads_Ad_Network_Ad_Unit $ad ) {
25
+ return $ad->active;
26
+ } ) );
27
 
28
  ?>
29
  <div id="mapi-wrap" class="aa-select-list">
31
  <button type="button" id="mapi-close-selector" class="notice-dismiss"></button>
32
  <?php endif;?>
33
  <i id="mapi-toggle-idle" title="<?php esc_attr_e( 'Show inactive ads' , 'advanced-ads' ); ?>" class="dashicons dashicons-visibility mapiaction" data-mapiaction="toggleidle"></i>
34
+ <i class="aa-select-list-update dashicons dashicons-update mapiaction" data-mapiaction="updateList" style="color:#0085ba;cursor:pointer;font-size:20px;" title="<?php esc_attr_e( 'Update the ad units list', 'advanced-ads' ); ?>"></i>
 
 
 
35
  <div id="mapi-loading-overlay" class="aa-select-list-loading-overlay">
36
  <img alt="..." src="<?php echo ADVADS_BASE_URL . 'admin/assets/img/loader.gif'; ?>" style="margin-top:8em;" />
37
  </div>
42
  // TODO: make sure the div is not needed anymore, and what it's purpose is, then remove it, if possible
43
  ?>
44
  <div id="mapi-list-header" class="aa-select-list-header" style="display:none;">
 
 
 
45
  <span><?php esc_html_e( 'Name', 'advanced-ads' ); ?></span>
46
  <?php if ($display_slot_id):?><span><?php echo esc_html_x( 'Slot ID', 'AdSense ad', 'advanced-ads' ); ?></span><?php endif;?>
47
  <span><?php echo esc_html_x( 'Type', 'AdSense ad', 'advanced-ads' ); ?></span>
52
  <table class="widefat striped">
53
  <thead>
54
  <tr>
 
 
 
55
  <th><?php esc_html_e( 'Name', 'advanced-ads' ); ?></th>
56
  <?php if ($display_slot_id):?><th><?php echo esc_html_x( 'Slot ID', 'AdSense ad', 'advanced-ads' ); ?></th><?php endif;?>
57
  <th><?php echo esc_html_x( 'Type', 'AdSense ad', 'advanced-ads' ); ?></th>
59
  </tr>
60
  </thead>
61
  <tbody>
62
+ <?php if ( $only_inactive_units ) : ?>
63
+ <tr id="mapi-notice-inactive">
64
+ <td colspan="5" style="text-align:center;">
65
+ <?php esc_attr_e( 'No active ad units found', 'advanced-ads' ); ?>
66
+ <button type="button" class="mapiaction icon-button" data-mapiaction="toggleidle">
67
+ <?php esc_attr_e( 'Show all ad units', 'advanced-ads' ); ?>
68
+ <i class="dashicons dashicons-visibility" style="font-size:20px;"></i>
69
+ </button>
70
+ </td>
71
+ </tr>
72
+ <?php endif; ?>
73
+ <?php if ( empty( $ad_units ) ) : ?>
74
+ <tr id="mapi-notice-noads">
75
+ <td colspan="5" style="text-align:center;">
76
+ <?php esc_attr_e( 'No ad units found', 'advanced-ads' ); ?>
77
+ <button type="button" class="mapiaction icon-button" data-mapiaction="updateList">
78
+ <?php esc_attr_e( 'Update the ad units list', 'advanced-ads' ); ?>
79
+ <i class="dashicons dashicons-update" style="color:#0085ba;font-size:20px;"></i>
80
+ </button>
81
+ </td>
82
+ </tr>
83
+ <?php else :
84
  foreach ($ad_units as $ad_unit){
85
  $ad_unit->is_supported = $network->is_supported($ad_unit);
86
  }
87
  $sorted_adunits = Advanced_Ads_Ad_Network_Ad_Unit::sort_ad_units( $ad_units, $external_ad_unit_id);
88
  ?>
89
+ <?php foreach ( $sorted_adunits as $unit ) : ?>
90
+ <tr class="advads-clickable-row mapiaction" data-mapiaction="getCode" data-slotid="<?php echo esc_attr( $unit->id ); ?>" data-active="<?php echo esc_attr( $unit->active ); ?>">
91
+ <td><?php echo $unit->name; ?></td>
92
+ <?php if ( $display_slot_id ) : ?>
93
+ <td class="unitcode">
94
+ <?php echo '<span><span>' . esc_html( $unit->slot_id ) . '</span></span>'; ?>
95
+ </td>
96
+ <?php endif; ?>
97
+ <td class="unittype">
98
+ <?php if ( $unit->is_supported ) : ?>
99
+ <?php if ( ! empty( $unit->code ) ) : ?>
100
+ <?php echo esc_attr( Advanced_Ads_AdSense_MAPI::format_ad_data( $unit, 'type' ) ); ?>
101
+ <?php else : ?>
102
+ <button type="button" class="button-secondary button-small" title="<?php esc_attr_e( 'Get the code for this ad', 'advanced-ads' ); ?>">
103
+ <span style="line-height: 26px;" class="dashicons dashicons-update"></span> <?php esc_html_e( 'Load', 'advanced ads' ); ?>
104
+ </button>
105
+ <?php endif; ?>
106
+ <?php elseif ( empty( $unit->code ) ) : ?>
107
+ <span class="dashicons dashicons-warning" title="<?php esc_attr_e( 'Ad can\'t be imported, click for details', 'advanced-ads' ); ?>"></span>
108
+ <?php endif; ?>
109
+ </td>
110
+ <td class="unitsize">
111
+ <?php echo esc_attr( Advanced_Ads_AdSense_MAPI::format_ad_data( $unit, 'size' ) ); ?>
112
+ </td>
113
+ </tr>
114
+ <?php endforeach; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  <?php endif; ?>
116
  </tbody>
117
  </table>
118
  </div>
119
+ <p class="advads-error-message" id="remote-ad-code-error" style="display:none;"><strong><?php esc_attr_e( 'Unrecognized ad code', 'advanced-ads' ); ?></strong></p>
120
+ <p class="advads-error-message" id="remote-ad-code-msg"></p>
121
+ </div>
122
 
123
+ <div style="display:none;" id="remote-ad-unsupported-ad-type">
124
+ <h3 class="advads-error-message">
125
+ <i class="dashicons dashicons-warning"></i><?php esc_html_e( 'This ad type can currently not be imported from AdSense.', 'advanced-ads' ); ?>
126
+ </h3>
127
+ <p>
128
+ <?php esc_html_e( 'You can proceed with one of the following solutions', 'advanced-ads' ); ?>:
129
+ </p>
130
+ <ul>
131
+ <li>
132
+ <?php
133
+ /* Translators: 1: opening tag for AdSense account link 2: opening tag for a link to insert ad code 3: closing a tag */
134
+ printf( esc_html__( '%1$sCopy the code from your AdSense account%3$s and %2$sinsert a new AdSense code here%3$s.', 'advanced-ads' ), '<a href="https://www.google.com/adsense/new/u/0/' . esc_attr( $pub_id ) . '/myads/units" target="_blank">', '<a href="#" class="mapi-insert-code prevent-default">', '</a>' );
135
+ ?>
136
+ </li>
137
+ <li>
138
+ <?php
139
+ /* Translators: 1: opening tag for a link to create an ad manually 2: closing a tag */
140
+ printf( wp_kses( __( '%1$sCreate an AdSense code manually%2$s: Select the <em>Normal</em> or <em>Responsive</em> type and the size.', 'advanced-ads' ), array(
141
+ 'em' => array(),
142
+ 'strong' => array(),
143
+ ) ), '<a href="#" class="mapi-close-selector-link prevent-default">', '</a>' );
144
+ ?>
145
+ </li>
146
+ <li>
147
+ <?php esc_html_e( 'Choose a different ad from your AdSense account above.', 'advanced-ads' ); ?>
148
+ </li>
149
+ </ul>
150
+ </div>
modules/gadsense/includes/class-ad-type-adsense.php CHANGED
@@ -17,7 +17,8 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
17
 
18
  /**
19
  * ID - internal type of the ad type
20
- * ust be static so set your own ad type ID here
 
21
  * use slug like format, only lower case, underscores and hyphens
22
  *
23
  * @since 1.4
@@ -148,13 +149,20 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
148
  /**
149
  * Sanitize content field on save
150
  *
151
- * @param string $content ad content.
152
- *
153
  * @return string $content sanitized ad content
154
  * @since 1.0.0
155
  */
156
  public function sanitize_content( $content = '' ) {
157
  $content = wp_unslash( $content );
 
 
 
 
 
 
 
158
 
159
  return $content;
160
  }
@@ -205,28 +213,6 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
205
 
206
  $is_static_normal_content = ! in_array( $content->unitType, array( 'responsive', 'link-responsive', 'matched-content', 'in-article', 'in-feed' ) );
207
 
208
- // show placeholder for AdSense ads in Customizer and Elementor.
209
- if ( ( ! Advanced_Ads_Plugin::is_new_user( 1575892800 ) || Advanced_Ads_Plugin::show_to_new_users( 1575547200, 'a' ) )
210
- && Advanced_Ads_Utils::is_iframe() ) {
211
- $attrs = array(
212
- 'style' => array(
213
- 'width' => ( $is_static_normal_content && $ad->width ) ? $ad->width . 'px' : '300px',
214
- 'height' => ( $is_static_normal_content && $ad->height ) ? $ad->height . 'px' : '125px',
215
- 'text-align' => 'center',
216
- 'display' => 'flex',
217
- 'align-items' => 'center',
218
- 'justify-content' => 'center',
219
- 'background' => '#cccccc',
220
- 'color' => '#64655D',
221
- ),
222
- );
223
-
224
- return '<div ' . Advanced_Ads_Utils::build_html_attributes( $attrs ) . '>'
225
- // translators: we replace AdSense code with a dummy ad code in the Customizer and Elementor since AdSense could cause them to break. This is the text within that dummy ad.
226
- . __( 'This will be an AdSense ad on your live site.', 'advanced-ads' )
227
- . '</div>';
228
- }
229
-
230
  $output = apply_filters( 'advanced-ads-gadsense-output', false, $ad, $pub_id, $content );
231
  if ( false !== $output ) {
232
  return $output;
@@ -252,6 +238,7 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
252
  $output .= '<script> ' . "\n";
253
  $output .= '(adsbygoogle = window.adsbygoogle || []).push({}); ' . "\n";
254
  $output .= '</script>' . "\n";
 
255
  } else {
256
  /**
257
  * The value of $ad->content->resize should be tested to format the output correctly
17
 
18
  /**
19
  * ID - internal type of the ad type
20
+ *
21
+ * must be static so set your own ad type ID here
22
  * use slug like format, only lower case, underscores and hyphens
23
  *
24
  * @since 1.4
149
  /**
150
  * Sanitize content field on save
151
  *
152
+ * @param string $content ad content
153
+ *
154
  * @return string $content sanitized ad content
155
  * @since 1.0.0
156
  */
157
  public function sanitize_content( $content = '' ) {
158
  $content = wp_unslash( $content );
159
+ $ad_unit = json_decode( $content );
160
+ // remove this slotId from unsupported_ads
161
+ $mapi_options = Advanced_Ads_AdSense_MAPI::get_option();
162
+ if ( array_key_exists( $ad_unit->slotId, $mapi_options['unsupported_units'] ) ) {
163
+ unset( $mapi_options['unsupported_units'][ $ad_unit->slotId ] );
164
+ update_option( Advanced_Ads_AdSense_MAPI::OPTNAME, $mapi_options );
165
+ }
166
 
167
  return $content;
168
  }
213
 
214
  $is_static_normal_content = ! in_array( $content->unitType, array( 'responsive', 'link-responsive', 'matched-content', 'in-article', 'in-feed' ) );
215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  $output = apply_filters( 'advanced-ads-gadsense-output', false, $ad, $pub_id, $content );
217
  if ( false !== $output ) {
218
  return $output;
238
  $output .= '<script> ' . "\n";
239
  $output .= '(adsbygoogle = window.adsbygoogle || []).push({}); ' . "\n";
240
  $output .= '</script>' . "\n";
241
+ unset( $ad->wrapper['style']['height'] );
242
  } else {
243
  /**
244
  * The value of $ad->content->resize should be tested to format the output correctly
modules/gadsense/includes/class-mapi.php CHANGED
@@ -11,8 +11,6 @@ class Advanced_Ads_AdSense_MAPI {
11
 
12
  const CALL_PER_24H = 20;
13
 
14
- const UNSUPPORTED_TYPE_LINK = 'https://wpadvancedads.com/adsense-ad-type-not-available/';
15
-
16
  private static $instance = null;
17
 
18
  private static $default_options = array();
@@ -45,6 +43,7 @@ class Advanced_Ads_AdSense_MAPI {
45
  add_action( 'wp_ajax_advads_gadsense_mapi_select_account', array( $this, 'ajax_account_selected' ) );
46
  add_action( 'wp_ajax_advads_mapi_get_adCode', array( $this, 'ajax_get_adCode' ) );
47
  add_action( 'wp_ajax_advads-mapi-reconstructed-code', array( $this, 'ajax_save_reconstructed_code' ) );
 
48
  add_action( 'wp_ajax_advads-mapi-revoke-token', array( $this, 'ajax_revoke_tokken' ) );
49
  add_action( 'wp_ajax_advads-mapi-get-alerts', array( $this, 'ajax_get_account_alerts' ) );
50
  add_action( 'wp_ajax_advads-mapi-dismiss-alert', array( $this, 'ajax_dismiss_alert' ) );
@@ -348,7 +347,13 @@ class Advanced_Ads_AdSense_MAPI {
348
  isset( $adCode['error']['errors'][0]['reason'] ) &&
349
  'doesNotSupportAdUnitType' == $adCode['error']['errors'][0]['reason']
350
  ) {
351
- $options['unsupported_units'][ $adUnit ] = 1;
 
 
 
 
 
 
352
  update_option( self::OPTNAME, $options );
353
  return array(
354
  'status' => false,
@@ -617,7 +622,62 @@ class Advanced_Ads_AdSense_MAPI {
617
  die;
618
 
619
  }
620
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
621
  /**
622
  * Save ad code reconstructed from ad parameters
623
  */
@@ -675,9 +735,18 @@ class Advanced_Ads_AdSense_MAPI {
675
  * Ad code is returned as string. Otherwise it's an error
676
  */
677
  if ( is_string( $code ) ) {
678
-
679
- $response = array( 'code' => $code );
680
-
 
 
 
 
 
 
 
 
 
681
  /**
682
  * Add quota info for default API creds
683
  */
@@ -701,6 +770,7 @@ class Advanced_Ads_AdSense_MAPI {
701
  }
702
  die;
703
  }
 
704
  /**
705
  * Dismiss an account alert
706
  */
@@ -1223,19 +1293,55 @@ class Advanced_Ads_AdSense_MAPI {
1223
 
1224
  /**
1225
  * Format ad type and size strings from Google for display
 
 
 
 
 
1226
  */
1227
- public static function format_ad_data( $str = '', $format = 'type' ) {
1228
- if ( 'type' == $format ) {
1229
- $str = str_replace( '_', ', ', $str );
1230
- $str = strtolower( $str );
1231
- $str = ucwords( $str );
1232
- } else {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1233
  // size.
 
1234
  $str = str_replace( 'SIZE_', '', $str );
1235
  $str = str_replace( '_', 'x', $str );
1236
  $str = strtolower( $str );
1237
  $str = ucwords( $str );
 
 
1238
  }
 
1239
  return $str;
1240
  }
1241
 
11
 
12
  const CALL_PER_24H = 20;
13
 
 
 
14
  private static $instance = null;
15
 
16
  private static $default_options = array();
43
  add_action( 'wp_ajax_advads_gadsense_mapi_select_account', array( $this, 'ajax_account_selected' ) );
44
  add_action( 'wp_ajax_advads_mapi_get_adCode', array( $this, 'ajax_get_adCode' ) );
45
  add_action( 'wp_ajax_advads-mapi-reconstructed-code', array( $this, 'ajax_save_reconstructed_code' ) );
46
+ add_action( 'wp_ajax_advads-mapi-save-manual-code', array( $this, 'ajax_save_manual_code' ) );
47
  add_action( 'wp_ajax_advads-mapi-revoke-token', array( $this, 'ajax_revoke_tokken' ) );
48
  add_action( 'wp_ajax_advads-mapi-get-alerts', array( $this, 'ajax_get_account_alerts' ) );
49
  add_action( 'wp_ajax_advads-mapi-dismiss-alert', array( $this, 'ajax_dismiss_alert' ) );
347
  isset( $adCode['error']['errors'][0]['reason'] ) &&
348
  'doesNotSupportAdUnitType' == $adCode['error']['errors'][0]['reason']
349
  ) {
350
+ if ( array_key_exists( $adUnit, $options['ad_codes'] ) ) {
351
+ if ( array_key_exists( $adUnit, $options['unsupported_units'] ) ) {
352
+ unset( $options['unsupported_units'][ $adUnit ] );
353
+ }
354
+ } else {
355
+ $options['unsupported_units'][ $adUnit ] = 1;
356
+ }
357
  update_option( self::OPTNAME, $options );
358
  return array(
359
  'status' => false,
622
  die;
623
 
624
  }
625
+
626
+ /**
627
+ * When a user manually adds an ad code, save it
628
+ */
629
+ public function ajax_save_manual_code() {
630
+ if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads' ) ) ) {
631
+ die();
632
+ }
633
+
634
+ if ( ! wp_verify_nonce( isset( $_POST['nonce'] ) ? $_REQUEST['nonce'] : '', 'advads-mapi' ) ) {
635
+ die();
636
+ }
637
+
638
+ $publisher_id = sanitize_text_field( wp_unslash( isset( $_POST['parsed_code']['pubId'] ) ? $_POST['parsed_code']['pubId'] : '' ) );
639
+ if ( ! $this->check_valid_publisher( $publisher_id ) ) {
640
+ wp_send_json_error(
641
+ array(
642
+ 'message' => __( 'This ad code is from a different AdSense Account', 'advanced-ads' ),
643
+ ),
644
+ 400
645
+ );
646
+ }
647
+
648
+ if ( empty( $_POST['parsed_code']['slotId'] ) || empty( $_POST['raw_code'] ) ) {
649
+ die();
650
+ }
651
+
652
+ static $options;
653
+ if ( is_null( $options ) ) {
654
+ $options = self::get_option();
655
+ }
656
+
657
+ $slot_id = 'ca-' . $publisher_id . ':' . sanitize_text_field( wp_unslash( $_POST['parsed_code']['slotId'] ) );
658
+
659
+ // phpcs:disable WordPress.Security
660
+ $options['ad_codes'][ $slot_id ] = urldecode( $_POST['raw_code'] );
661
+ // phpcs:enable
662
+
663
+ if ( array_key_exists( $slot_id, $options['unsupported_units'] ) ) {
664
+ unset( $options['unsupported_units'][ $slot_id ] );
665
+ }
666
+
667
+ wp_send_json_success( array( 'updated' => update_option( self::OPTNAME, $options ) ) );
668
+ }
669
+
670
+ /**
671
+ * Check if the provided AdSense Publisher ID matches the saved ID
672
+ *
673
+ * @param string $pub AdSense Publisher ID.
674
+ *
675
+ * @return bool
676
+ */
677
+ protected function check_valid_publisher( $pub ) {
678
+ return Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id() === $pub;
679
+ }
680
+
681
  /**
682
  * Save ad code reconstructed from ad parameters
683
  */
735
  * Ad code is returned as string. Otherwise it's an error
736
  */
737
  if ( is_string( $code ) ) {
738
+ $ad_units = array_filter(
739
+ Advanced_Ads_Network_Adsense::get_instance()->get_external_ad_units(),
740
+ function ( Advanced_Ads_Ad_Network_Ad_Unit $ad_unit ) use ( $unit ) {
741
+ return $ad_unit->id === $unit;
742
+ }
743
+ );
744
+ $ad_unit = reset( $ad_units );
745
+ $response = array(
746
+ 'code' => $code,
747
+ 'type' => self::format_ad_data( $ad_unit, 'type' ),
748
+ );
749
+
750
  /**
751
  * Add quota info for default API creds
752
  */
770
  }
771
  die;
772
  }
773
+
774
  /**
775
  * Dismiss an account alert
776
  */
1293
 
1294
  /**
1295
  * Format ad type and size strings from Google for display
1296
+ *
1297
+ * @param Advanced_Ads_Ad_Network_Ad_Unit $ad_unit the ad unit for which to format the details.
1298
+ * @param string $format takes either type or size.
1299
+ *
1300
+ * @return string
1301
  */
1302
+ public static function format_ad_data( Advanced_Ads_Ad_Network_Ad_Unit $ad_unit, $format = 'type' ) {
1303
+ if ( 'type' === $format ) {
1304
+ $str = $ad_unit->display_type;
1305
+ $options = self::get_option();
1306
+ if ( array_key_exists( $ad_unit->id, $options['ad_codes'] ) ) {
1307
+ preg_match_all( '/data-ad-format="(?<format>.+?)"|data-ad-layout="(?<layout>.+?)"/', $options['ad_codes'][ $ad_unit->id ], $matches );
1308
+ $format = array_filter( $matches['format'] );
1309
+ $layout = array_filter( $matches['layout'] );
1310
+ $format = reset( $format );
1311
+ $layout = reset( $layout );
1312
+ if ( empty( $format ) ) {
1313
+ $format = '';
1314
+ }
1315
+ if ( empty( $layout ) ) {
1316
+ $layout = '';
1317
+ }
1318
+
1319
+ if ( 'autorelaxed' === $format ) {
1320
+ $str = _x( 'Matched Content', 'AdSense ad type', 'advanced-ads' );
1321
+ } elseif ( 'fluid' === $format ) {
1322
+ if ( 'in-article' === $layout ) {
1323
+ $str = _x( 'In-article', 'AdSense ad type', 'advanced-ads' );
1324
+ } else {
1325
+ $str = _x( 'In-feed', 'AdSense ad type', 'advanced-ads' );
1326
+ }
1327
+ }
1328
+ }
1329
+ if ( strpos( $str, 'TEXT' ) !== false ) {
1330
+ $str = _x( 'Display', 'AdSense ad type', 'advanced-ads' );
1331
+ } elseif ( 'LINK' === $str ) {
1332
+ $str = _x( 'Link', 'AdSense ad type', 'advanced-ads' );
1333
+ }
1334
+ } elseif ( 'size' === $format ) {
1335
  // size.
1336
+ $str = $ad_unit->display_size;
1337
  $str = str_replace( 'SIZE_', '', $str );
1338
  $str = str_replace( '_', 'x', $str );
1339
  $str = strtolower( $str );
1340
  $str = ucwords( $str );
1341
+ } else {
1342
+ $str = '';
1343
  }
1344
+
1345
  return $str;
1346
  }
1347
 
modules/gadsense/includes/class-network-adsense.php CHANGED
@@ -264,7 +264,7 @@ class Advanced_Ads_Network_Adsense extends Advanced_Ads_Ad_Network{
264
  if( 0 === strpos( $options['adsense-id'], 'ca-' ) ){
265
  $options['adsense-id'] = str_replace( 'ca-', '', $options['adsense-id'] );
266
  }
267
-
268
  // trim publisher id
269
  $options['adsense-id'] = trim($options['adsense-id']);
270
  }
@@ -328,12 +328,14 @@ class Advanced_Ads_Network_Adsense extends Advanced_Ads_Ad_Network{
328
  $ad_unit->code = $ad_codes[$id];
329
  }
330
  if (isset ($raw['contentAdsSettings'])){
331
- if (isset ($raw['contentAdsSettings']['type'])){
332
- $ad_unit->display_type = Advanced_Ads_AdSense_MAPI::format_ad_data( $raw['contentAdsSettings']['type'], 'type' );
333
- }
334
- if (isset ($raw['contentAdsSettings']['size'])){
335
- $ad_unit->display_size = Advanced_Ads_AdSense_MAPI::format_ad_data( $raw['contentAdsSettings']['size'], 'size' );
336
- }
 
 
337
  }
338
  $units[] = $ad_unit;
339
  }
@@ -346,11 +348,15 @@ class Advanced_Ads_Network_Adsense extends Advanced_Ads_Ad_Network{
346
  Advanced_Ads_AdSense_Admin::get_mapi_ad_selector($hide_idle_ads);
347
  }
348
 
349
- public function is_supported($ad_unit)
350
- {
351
- $mapi_options = Advanced_Ads_AdSense_MAPI::get_option();
352
- return ! array_key_exists( $ad_unit->id, $mapi_options['unsupported_units'] );
353
- }
 
 
 
 
354
 
355
  public function update_external_ad_units()
356
  {
@@ -367,13 +373,23 @@ class Advanced_Ads_Network_Adsense extends Advanced_Ads_Ad_Network{
367
  return GADSENSE_BASE_URL . 'admin/assets/js/adsense.js';
368
  }
369
 
370
- public function append_javascript_data(&$data)
371
- {
372
- $pub_id = Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id();
373
- $data['pubId'] = $pub_id;
374
- $data['connected'] = $this->is_account_connected();
375
- return $data;
376
- }
 
 
 
 
 
 
 
 
 
 
377
 
378
  public function supports_manual_ad_setup()
379
  {
264
  if( 0 === strpos( $options['adsense-id'], 'ca-' ) ){
265
  $options['adsense-id'] = str_replace( 'ca-', '', $options['adsense-id'] );
266
  }
267
+
268
  // trim publisher id
269
  $options['adsense-id'] = trim($options['adsense-id']);
270
  }
328
  $ad_unit->code = $ad_codes[$id];
329
  }
330
  if (isset ($raw['contentAdsSettings'])){
331
+ if ( isset( $raw['contentAdsSettings']['type'] ) ) {
332
+ $ad_unit->display_type = $raw['contentAdsSettings']['type'];
333
+ $ad_unit->display_type = Advanced_Ads_AdSense_MAPI::format_ad_data( $ad_unit, 'type' );
334
+ }
335
+ if ( isset( $raw['contentAdsSettings']['size'] ) ) {
336
+ $ad_unit->display_size = $raw['contentAdsSettings']['size'];
337
+ $ad_unit->display_size = Advanced_Ads_AdSense_MAPI::format_ad_data( $ad_unit, 'size' );
338
+ }
339
  }
340
  $units[] = $ad_unit;
341
  }
348
  Advanced_Ads_AdSense_Admin::get_mapi_ad_selector($hide_idle_ads);
349
  }
350
 
351
+ public function is_supported( $ad_unit ) {
352
+ $mapi_options = Advanced_Ads_AdSense_MAPI::get_option();
353
+ $supported = ! array_key_exists( $ad_unit->id, $mapi_options['unsupported_units'] );
354
+ if ( ! $supported ) {
355
+ $supported = array_key_exists( $ad_unit->id, $mapi_options['ad_codes'] );
356
+ }
357
+
358
+ return $supported;
359
+ }
360
 
361
  public function update_external_ad_units()
362
  {
373
  return GADSENSE_BASE_URL . 'admin/assets/js/adsense.js';
374
  }
375
 
376
+ /**
377
+ * @inheritDoc
378
+ */
379
+ public function append_javascript_data( &$data ) {
380
+ $pub_id = Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id();
381
+ $data['pubId'] = $pub_id;
382
+ $data['connected'] = $this->is_account_connected();
383
+ $data['ad_types'] = array(
384
+ 'matched_content' => _x( 'Matched Content', 'AdSense ad type', 'advanced-ads' ),
385
+ 'in_article' => _x( 'In-article', 'AdSense ad type', 'advanced-ads' ),
386
+ 'in_feed' => _x( 'In-feed', 'AdSense ad type', 'advanced-ads' ),
387
+ 'display' => _x( 'Display', 'AdSense ad type', 'advanced-ads' ),
388
+ 'link' => _x( 'Link', 'AdSense ad type', 'advanced-ads' ),
389
+ );
390
+
391
+ return $data;
392
+ }
393
 
394
  public function supports_manual_ad_setup()
395
  {
modules/gadsense/public/public.php CHANGED
@@ -36,10 +36,6 @@ class Advanced_Ads_AdSense_Public {
36
  return;
37
  }
38
 
39
- if ( Advanced_Ads_Utils::is_iframe() ) {
40
- return;
41
- }
42
-
43
  $privacy_options = Advanced_Ads_Privacy::get_instance()->options();
44
  $privacy_enabled = ! empty( $privacy_options['enabled'] ) && 'not_needed' !== Advanced_Ads_Privacy::get_instance()->get_state();
45
  $npa_enabled = ! empty( $privacy_options['show-non-personalized-adsense'] );
36
  return;
37
  }
38
 
 
 
 
 
39
  $privacy_options = Advanced_Ads_Privacy::get_instance()->options();
40
  $privacy_enabled = ! empty( $privacy_options['enabled'] ) && 'not_needed' !== Advanced_Ads_Privacy::get_instance()->get_state();
41
  $npa_enabled = ! empty( $privacy_options['show-non-personalized-adsense'] );
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: ads, ad manager, ad rotation, adsense, banner
4
  Requires at least: 4.6
5
  Tested up to: 5.3
6
  Requires PHP: 5.6
7
- Stable tag: 1.16.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -304,6 +304,15 @@ Yes. Advanced Ads is based on WordPress standards and therefore easily customiza
304
 
305
  == Changelog ==
306
 
 
 
 
 
 
 
 
 
 
307
  = 1.16.1 =
308
 
309
  * fixed JavaScript that broke privacy module check in the frontend
@@ -322,6 +331,7 @@ Yes. Advanced Ads is based on WordPress standards and therefore easily customiza
322
  * fixed missing index issue on 404 pages for logged-in admins
323
  * fixed AJAX/PHP error 403 on Settings page
324
  * fixed layout issue that happened when "If>So Dynamic Content" plugin was active
 
325
 
326
  = 1.15 =
327
 
4
  Requires at least: 4.6
5
  Tested up to: 5.3
6
  Requires PHP: 5.6
7
+ Stable tag: 1.17
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
304
 
305
  == Changelog ==
306
 
307
+ = 1.17 =
308
+
309
+ * improved AdSense ad unit list coming from the AdSense API
310
+ * improved "highlight ads" option in Ad Health
311
+ * show notice if AJAX calls are broken
312
+ * added `com.pl` as exception for placing ads.txt files in subdomains
313
+ * removed placeholder for AdSense ads in the Customizer and Elementor editor
314
+ * fix for WP Smush lazy load preventing image ads from showing at all
315
+
316
  = 1.16.1 =
317
 
318
  * fixed JavaScript that broke privacy module check in the frontend
331
  * fixed missing index issue on 404 pages for logged-in admins
332
  * fixed AJAX/PHP error 403 on Settings page
333
  * fixed layout issue that happened when "If>So Dynamic Content" plugin was active
334
+ * prevented Ad label from taking height of fixed sized AdSense ads
335
 
336
  = 1.15 =
337
 
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit654978bf511f36f6eca47c8335223e8b::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit06cbf810899a84e0ff891cfee1f1d2be::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -37,10 +37,10 @@ return array(
37
  'Advanced_Ads_Display_Conditions' => $baseDir . '/classes/display-conditions.php',
38
  'Advanced_Ads_Filesystem' => $baseDir . '/classes/filesystem.php',
39
  'Advanced_Ads_Frontend_Checks' => $baseDir . '/classes/frontend_checks.php',
 
40
  'Advanced_Ads_Group' => $baseDir . '/classes/ad_group.php',
41
  'Advanced_Ads_Groups_List' => $baseDir . '/admin/includes/class-ad-groups-list.php',
42
  'Advanced_Ads_Model' => $baseDir . '/classes/ad-model.php',
43
- 'Advanced_Ads_Module' => $baseDir . '/admin/includes/class-module.php',
44
  'Advanced_Ads_Overview_Widgets_Callbacks' => $baseDir . '/admin/includes/class-overview-widgets.php',
45
  'Advanced_Ads_Placements' => $baseDir . '/classes/ad_placements.php',
46
  'Advanced_Ads_Plugin' => $baseDir . '/classes/plugin.php',
@@ -50,6 +50,98 @@ return array(
50
  'Advanced_Ads_Utils' => $baseDir . '/classes/utils.php',
51
  'Advanced_Ads_Visitor_Conditions' => $baseDir . '/classes/visitor-conditions.php',
52
  'Advanced_Ads_Widget' => $baseDir . '/classes/widget.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  'Yoast_I18n_WordPressOrg_v3' => $vendorDir . '/yoast/i18n-module/src/i18n-module-wordpressorg.php',
54
  'Yoast_I18n_v3' => $vendorDir . '/yoast/i18n-module/src/i18n-module.php',
 
 
55
  );
37
  'Advanced_Ads_Display_Conditions' => $baseDir . '/classes/display-conditions.php',
38
  'Advanced_Ads_Filesystem' => $baseDir . '/classes/filesystem.php',
39
  'Advanced_Ads_Frontend_Checks' => $baseDir . '/classes/frontend_checks.php',
40
+ 'Advanced_Ads_Frontend_Notices' => $baseDir . '/classes/frontend-notices.php',
41
  'Advanced_Ads_Group' => $baseDir . '/classes/ad_group.php',
42
  'Advanced_Ads_Groups_List' => $baseDir . '/admin/includes/class-ad-groups-list.php',
43
  'Advanced_Ads_Model' => $baseDir . '/classes/ad-model.php',
 
44
  'Advanced_Ads_Overview_Widgets_Callbacks' => $baseDir . '/admin/includes/class-overview-widgets.php',
45
  'Advanced_Ads_Placements' => $baseDir . '/classes/ad_placements.php',
46
  'Advanced_Ads_Plugin' => $baseDir . '/classes/plugin.php',
50
  'Advanced_Ads_Utils' => $baseDir . '/classes/utils.php',
51
  'Advanced_Ads_Visitor_Conditions' => $baseDir . '/classes/visitor-conditions.php',
52
  'Advanced_Ads_Widget' => $baseDir . '/classes/widget.php',
53
+ 'Composer\\Installers\\AglInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php',
54
+ 'Composer\\Installers\\AimeosInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AimeosInstaller.php',
55
+ 'Composer\\Installers\\AnnotateCmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
56
+ 'Composer\\Installers\\AsgardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AsgardInstaller.php',
57
+ 'Composer\\Installers\\AttogramInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AttogramInstaller.php',
58
+ 'Composer\\Installers\\BaseInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
59
+ 'Composer\\Installers\\BitrixInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BitrixInstaller.php',
60
+ 'Composer\\Installers\\BonefishInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BonefishInstaller.php',
61
+ 'Composer\\Installers\\CakePHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
62
+ 'Composer\\Installers\\ChefInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ChefInstaller.php',
63
+ 'Composer\\Installers\\CiviCrmInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php',
64
+ 'Composer\\Installers\\ClanCatsFrameworkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php',
65
+ 'Composer\\Installers\\CockpitInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CockpitInstaller.php',
66
+ 'Composer\\Installers\\CodeIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
67
+ 'Composer\\Installers\\Concrete5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
68
+ 'Composer\\Installers\\CraftInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
69
+ 'Composer\\Installers\\CroogoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
70
+ 'Composer\\Installers\\DecibelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DecibelInstaller.php',
71
+ 'Composer\\Installers\\DokuWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php',
72
+ 'Composer\\Installers\\DolibarrInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php',
73
+ 'Composer\\Installers\\DrupalInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
74
+ 'Composer\\Installers\\ElggInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
75
+ 'Composer\\Installers\\EliasisInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/EliasisInstaller.php',
76
+ 'Composer\\Installers\\ExpressionEngineInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php',
77
+ 'Composer\\Installers\\EzPlatformInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php',
78
+ 'Composer\\Installers\\FuelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
79
+ 'Composer\\Installers\\FuelphpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php',
80
+ 'Composer\\Installers\\GravInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/GravInstaller.php',
81
+ 'Composer\\Installers\\HuradInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
82
+ 'Composer\\Installers\\ImageCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php',
83
+ 'Composer\\Installers\\Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php',
84
+ 'Composer\\Installers\\ItopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ItopInstaller.php',
85
+ 'Composer\\Installers\\JoomlaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
86
+ 'Composer\\Installers\\KanboardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KanboardInstaller.php',
87
+ 'Composer\\Installers\\KirbyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KirbyInstaller.php',
88
+ 'Composer\\Installers\\KodiCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php',
89
+ 'Composer\\Installers\\KohanaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
90
+ 'Composer\\Installers\\LanManagementSystemInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php',
91
+ 'Composer\\Installers\\LaravelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
92
+ 'Composer\\Installers\\LavaLiteInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php',
93
+ 'Composer\\Installers\\LithiumInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
94
+ 'Composer\\Installers\\MODULEWorkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
95
+ 'Composer\\Installers\\MODXEvoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
96
+ 'Composer\\Installers\\MagentoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
97
+ 'Composer\\Installers\\MajimaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MajimaInstaller.php',
98
+ 'Composer\\Installers\\MakoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
99
+ 'Composer\\Installers\\MauticInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MauticInstaller.php',
100
+ 'Composer\\Installers\\MayaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MayaInstaller.php',
101
+ 'Composer\\Installers\\MediaWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
102
+ 'Composer\\Installers\\MicroweberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php',
103
+ 'Composer\\Installers\\ModxInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ModxInstaller.php',
104
+ 'Composer\\Installers\\MoodleInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MoodleInstaller.php',
105
+ 'Composer\\Installers\\OctoberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OctoberInstaller.php',
106
+ 'Composer\\Installers\\OntoWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php',
107
+ 'Composer\\Installers\\OsclassInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OsclassInstaller.php',
108
+ 'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
109
+ 'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
110
+ 'Composer\\Installers\\PhiftyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php',
111
+ 'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
112
+ 'Composer\\Installers\\PimcoreInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
113
+ 'Composer\\Installers\\PiwikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
114
+ 'Composer\\Installers\\PlentymarketsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php',
115
+ 'Composer\\Installers\\Plugin' => $vendorDir . '/composer/installers/src/Composer/Installers/Plugin.php',
116
+ 'Composer\\Installers\\PortoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PortoInstaller.php',
117
+ 'Composer\\Installers\\PrestashopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php',
118
+ 'Composer\\Installers\\PuppetInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PuppetInstaller.php',
119
+ 'Composer\\Installers\\PxcmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php',
120
+ 'Composer\\Installers\\RadPHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php',
121
+ 'Composer\\Installers\\ReIndexInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php',
122
+ 'Composer\\Installers\\RedaxoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php',
123
+ 'Composer\\Installers\\RoundcubeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php',
124
+ 'Composer\\Installers\\SMFInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SMFInstaller.php',
125
+ 'Composer\\Installers\\ShopwareInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
126
+ 'Composer\\Installers\\SilverStripeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
127
+ 'Composer\\Installers\\SiteDirectInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php',
128
+ 'Composer\\Installers\\SyDESInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SyDESInstaller.php',
129
+ 'Composer\\Installers\\Symfony1Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
130
+ 'Composer\\Installers\\TYPO3CmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
131
+ 'Composer\\Installers\\TYPO3FlowInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
132
+ 'Composer\\Installers\\TheliaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TheliaInstaller.php',
133
+ 'Composer\\Installers\\TuskInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TuskInstaller.php',
134
+ 'Composer\\Installers\\UserFrostingInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php',
135
+ 'Composer\\Installers\\VanillaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/VanillaInstaller.php',
136
+ 'Composer\\Installers\\VgmcpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php',
137
+ 'Composer\\Installers\\WHMCSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php',
138
+ 'Composer\\Installers\\WolfCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
139
+ 'Composer\\Installers\\WordPressInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
140
+ 'Composer\\Installers\\YawikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/YawikInstaller.php',
141
+ 'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
142
+ 'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
143
  'Yoast_I18n_WordPressOrg_v3' => $vendorDir . '/yoast/i18n-module/src/i18n-module-wordpressorg.php',
144
  'Yoast_I18n_v3' => $vendorDir . '/yoast/i18n-module/src/i18n-module.php',
145
+ 'xrstf\\Composer52\\AutoloadGenerator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
146
+ 'xrstf\\Composer52\\Generator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
147
  );
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit654978bf511f36f6eca47c8335223e8b {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit654978bf511f36f6eca47c8335223e8b {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit654978bf511f36f6eca47c8335223e8b', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit654978bf511f36f6eca47c8335223e8b', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit06cbf810899a84e0ff891cfee1f1d2be {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit06cbf810899a84e0ff891cfee1f1d2be', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit06cbf810899a84e0ff891cfee1f1d2be', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/autoload_static.php CHANGED
@@ -62,10 +62,10 @@ class ComposerStaticInitd24de3c06687d3cf4aad0b15c83747be
62
  'Advanced_Ads_Display_Conditions' => __DIR__ . '/../..' . '/classes/display-conditions.php',
63
  'Advanced_Ads_Filesystem' => __DIR__ . '/../..' . '/classes/filesystem.php',
64
  'Advanced_Ads_Frontend_Checks' => __DIR__ . '/../..' . '/classes/frontend_checks.php',
 
65
  'Advanced_Ads_Group' => __DIR__ . '/../..' . '/classes/ad_group.php',
66
  'Advanced_Ads_Groups_List' => __DIR__ . '/../..' . '/admin/includes/class-ad-groups-list.php',
67
  'Advanced_Ads_Model' => __DIR__ . '/../..' . '/classes/ad-model.php',
68
- 'Advanced_Ads_Module' => __DIR__ . '/../..' . '/admin/includes/class-module.php',
69
  'Advanced_Ads_Overview_Widgets_Callbacks' => __DIR__ . '/../..' . '/admin/includes/class-overview-widgets.php',
70
  'Advanced_Ads_Placements' => __DIR__ . '/../..' . '/classes/ad_placements.php',
71
  'Advanced_Ads_Plugin' => __DIR__ . '/../..' . '/classes/plugin.php',
@@ -75,8 +75,100 @@ class ComposerStaticInitd24de3c06687d3cf4aad0b15c83747be
75
  'Advanced_Ads_Utils' => __DIR__ . '/../..' . '/classes/utils.php',
76
  'Advanced_Ads_Visitor_Conditions' => __DIR__ . '/../..' . '/classes/visitor-conditions.php',
77
  'Advanced_Ads_Widget' => __DIR__ . '/../..' . '/classes/widget.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  'Yoast_I18n_WordPressOrg_v3' => __DIR__ . '/..' . '/yoast/i18n-module/src/i18n-module-wordpressorg.php',
79
  'Yoast_I18n_v3' => __DIR__ . '/..' . '/yoast/i18n-module/src/i18n-module.php',
 
 
80
  );
81
 
82
  public static function getInitializer(ClassLoader $loader)
62
  'Advanced_Ads_Display_Conditions' => __DIR__ . '/../..' . '/classes/display-conditions.php',
63
  'Advanced_Ads_Filesystem' => __DIR__ . '/../..' . '/classes/filesystem.php',
64
  'Advanced_Ads_Frontend_Checks' => __DIR__ . '/../..' . '/classes/frontend_checks.php',
65
+ 'Advanced_Ads_Frontend_Notices' => __DIR__ . '/../..' . '/classes/frontend-notices.php',
66
  'Advanced_Ads_Group' => __DIR__ . '/../..' . '/classes/ad_group.php',
67
  'Advanced_Ads_Groups_List' => __DIR__ . '/../..' . '/admin/includes/class-ad-groups-list.php',
68
  'Advanced_Ads_Model' => __DIR__ . '/../..' . '/classes/ad-model.php',
 
69
  'Advanced_Ads_Overview_Widgets_Callbacks' => __DIR__ . '/../..' . '/admin/includes/class-overview-widgets.php',
70
  'Advanced_Ads_Placements' => __DIR__ . '/../..' . '/classes/ad_placements.php',
71
  'Advanced_Ads_Plugin' => __DIR__ . '/../..' . '/classes/plugin.php',
75
  'Advanced_Ads_Utils' => __DIR__ . '/../..' . '/classes/utils.php',
76
  'Advanced_Ads_Visitor_Conditions' => __DIR__ . '/../..' . '/classes/visitor-conditions.php',
77
  'Advanced_Ads_Widget' => __DIR__ . '/../..' . '/classes/widget.php',
78
+ 'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AglInstaller.php',
79
+ 'Composer\\Installers\\AimeosInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AimeosInstaller.php',
80
+ 'Composer\\Installers\\AnnotateCmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
81
+ 'Composer\\Installers\\AsgardInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AsgardInstaller.php',
82
+ 'Composer\\Installers\\AttogramInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AttogramInstaller.php',
83
+ 'Composer\\Installers\\BaseInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
84
+ 'Composer\\Installers\\BitrixInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BitrixInstaller.php',
85
+ 'Composer\\Installers\\BonefishInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BonefishInstaller.php',
86
+ 'Composer\\Installers\\CakePHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
87
+ 'Composer\\Installers\\ChefInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ChefInstaller.php',
88
+ 'Composer\\Installers\\CiviCrmInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php',
89
+ 'Composer\\Installers\\ClanCatsFrameworkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php',
90
+ 'Composer\\Installers\\CockpitInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CockpitInstaller.php',
91
+ 'Composer\\Installers\\CodeIgniterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
92
+ 'Composer\\Installers\\Concrete5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
93
+ 'Composer\\Installers\\CraftInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
94
+ 'Composer\\Installers\\CroogoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
95
+ 'Composer\\Installers\\DecibelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DecibelInstaller.php',
96
+ 'Composer\\Installers\\DokuWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php',
97
+ 'Composer\\Installers\\DolibarrInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php',
98
+ 'Composer\\Installers\\DrupalInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
99
+ 'Composer\\Installers\\ElggInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
100
+ 'Composer\\Installers\\EliasisInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/EliasisInstaller.php',
101
+ 'Composer\\Installers\\ExpressionEngineInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php',
102
+ 'Composer\\Installers\\EzPlatformInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php',
103
+ 'Composer\\Installers\\FuelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
104
+ 'Composer\\Installers\\FuelphpInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php',
105
+ 'Composer\\Installers\\GravInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/GravInstaller.php',
106
+ 'Composer\\Installers\\HuradInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
107
+ 'Composer\\Installers\\ImageCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php',
108
+ 'Composer\\Installers\\Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Installer.php',
109
+ 'Composer\\Installers\\ItopInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ItopInstaller.php',
110
+ 'Composer\\Installers\\JoomlaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
111
+ 'Composer\\Installers\\KanboardInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KanboardInstaller.php',
112
+ 'Composer\\Installers\\KirbyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KirbyInstaller.php',
113
+ 'Composer\\Installers\\KodiCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php',
114
+ 'Composer\\Installers\\KohanaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
115
+ 'Composer\\Installers\\LanManagementSystemInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php',
116
+ 'Composer\\Installers\\LaravelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
117
+ 'Composer\\Installers\\LavaLiteInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php',
118
+ 'Composer\\Installers\\LithiumInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
119
+ 'Composer\\Installers\\MODULEWorkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
120
+ 'Composer\\Installers\\MODXEvoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
121
+ 'Composer\\Installers\\MagentoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
122
+ 'Composer\\Installers\\MajimaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MajimaInstaller.php',
123
+ 'Composer\\Installers\\MakoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
124
+ 'Composer\\Installers\\MauticInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MauticInstaller.php',
125
+ 'Composer\\Installers\\MayaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MayaInstaller.php',
126
+ 'Composer\\Installers\\MediaWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
127
+ 'Composer\\Installers\\MicroweberInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php',
128
+ 'Composer\\Installers\\ModxInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ModxInstaller.php',
129
+ 'Composer\\Installers\\MoodleInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MoodleInstaller.php',
130
+ 'Composer\\Installers\\OctoberInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OctoberInstaller.php',
131
+ 'Composer\\Installers\\OntoWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php',
132
+ 'Composer\\Installers\\OsclassInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OsclassInstaller.php',
133
+ 'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
134
+ 'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
135
+ 'Composer\\Installers\\PhiftyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php',
136
+ 'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
137
+ 'Composer\\Installers\\PimcoreInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
138
+ 'Composer\\Installers\\PiwikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
139
+ 'Composer\\Installers\\PlentymarketsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php',
140
+ 'Composer\\Installers\\Plugin' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Plugin.php',
141
+ 'Composer\\Installers\\PortoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PortoInstaller.php',
142
+ 'Composer\\Installers\\PrestashopInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php',
143
+ 'Composer\\Installers\\PuppetInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PuppetInstaller.php',
144
+ 'Composer\\Installers\\PxcmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php',
145
+ 'Composer\\Installers\\RadPHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php',
146
+ 'Composer\\Installers\\ReIndexInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php',
147
+ 'Composer\\Installers\\RedaxoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php',
148
+ 'Composer\\Installers\\RoundcubeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php',
149
+ 'Composer\\Installers\\SMFInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SMFInstaller.php',
150
+ 'Composer\\Installers\\ShopwareInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
151
+ 'Composer\\Installers\\SilverStripeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
152
+ 'Composer\\Installers\\SiteDirectInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php',
153
+ 'Composer\\Installers\\SyDESInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SyDESInstaller.php',
154
+ 'Composer\\Installers\\Symfony1Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
155
+ 'Composer\\Installers\\TYPO3CmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
156
+ 'Composer\\Installers\\TYPO3FlowInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
157
+ 'Composer\\Installers\\TheliaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TheliaInstaller.php',
158
+ 'Composer\\Installers\\TuskInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TuskInstaller.php',
159
+ 'Composer\\Installers\\UserFrostingInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php',
160
+ 'Composer\\Installers\\VanillaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/VanillaInstaller.php',
161
+ 'Composer\\Installers\\VgmcpInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php',
162
+ 'Composer\\Installers\\WHMCSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php',
163
+ 'Composer\\Installers\\WolfCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
164
+ 'Composer\\Installers\\WordPressInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
165
+ 'Composer\\Installers\\YawikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/YawikInstaller.php',
166
+ 'Composer\\Installers\\ZendInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
167
+ 'Composer\\Installers\\ZikulaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
168
  'Yoast_I18n_WordPressOrg_v3' => __DIR__ . '/..' . '/yoast/i18n-module/src/i18n-module-wordpressorg.php',
169
  'Yoast_I18n_v3' => __DIR__ . '/..' . '/yoast/i18n-module/src/i18n-module.php',
170
+ 'xrstf\\Composer52\\AutoloadGenerator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
171
+ 'xrstf\\Composer52\\Generator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
172
  );
173
 
174
  public static function getInitializer(ClassLoader $loader)
vendor/composer/installed.json CHANGED
@@ -1,77 +1,4 @@
1
  [
2
- {
3
- "name": "xrstf/composer-php52",
4
- "version": "v1.0.20",
5
- "version_normalized": "1.0.20.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer-php52/composer-php52.git",
9
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
14
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
15
- "shasum": ""
16
- },
17
- "time": "2016-04-16 21:52:24",
18
- "type": "library",
19
- "extra": {
20
- "branch-alias": {
21
- "dev-default": "1.x-dev"
22
- }
23
- },
24
- "installation-source": "dist",
25
- "autoload": {
26
- "psr-0": {
27
- "xrstf\\Composer52": "lib/"
28
- }
29
- },
30
- "notification-url": "https://packagist.org/downloads/",
31
- "license": [
32
- "MIT"
33
- ]
34
- },
35
- {
36
- "name": "yoast/i18n-module",
37
- "version": "3.0.0",
38
- "version_normalized": "3.0.0.0",
39
- "source": {
40
- "type": "git",
41
- "url": "https://github.com/Yoast/i18n-module.git",
42
- "reference": "76b1645aaf8cf9a07dc06ec0bbe2a6838feeed4c"
43
- },
44
- "dist": {
45
- "type": "zip",
46
- "url": "https://api.github.com/repos/Yoast/i18n-module/zipball/76b1645aaf8cf9a07dc06ec0bbe2a6838feeed4c",
47
- "reference": "76b1645aaf8cf9a07dc06ec0bbe2a6838feeed4c",
48
- "shasum": ""
49
- },
50
- "time": "2017-09-06 07:17:52",
51
- "type": "library",
52
- "installation-source": "dist",
53
- "autoload": {
54
- "classmap": [
55
- "src/"
56
- ]
57
- },
58
- "notification-url": "https://packagist.org/downloads/",
59
- "license": [
60
- "GPL-2.0+"
61
- ],
62
- "authors": [
63
- {
64
- "name": "Team Yoast",
65
- "email": "support@yoast.com",
66
- "homepage": "https://yoast.com"
67
- }
68
- ],
69
- "description": "Handle i18n for WordPress plugins.",
70
- "homepage": "https://github.com/Yoast/i18n-module",
71
- "keywords": [
72
- "wordpress"
73
- ]
74
- },
75
  {
76
  "name": "composer/installers",
77
  "version": "v1.6.0",
@@ -98,7 +25,7 @@
98
  "composer/composer": "1.0.*@dev",
99
  "phpunit/phpunit": "^4.8.36"
100
  },
101
- "time": "2018-08-27 06:10:37",
102
  "type": "composer-plugin",
103
  "extra": {
104
  "class": "Composer\\Installers\\Plugin",
@@ -193,5 +120,78 @@
193
  "zend",
194
  "zikula"
195
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  }
197
  ]
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "composer/installers",
4
  "version": "v1.6.0",
25
  "composer/composer": "1.0.*@dev",
26
  "phpunit/phpunit": "^4.8.36"
27
  },
28
+ "time": "2018-08-27T06:10:37+00:00",
29
  "type": "composer-plugin",
30
  "extra": {
31
  "class": "Composer\\Installers\\Plugin",
120
  "zend",
121
  "zikula"
122
  ]
123
+ },
124
+ {
125
+ "name": "xrstf/composer-php52",
126
+ "version": "v1.0.20",
127
+ "version_normalized": "1.0.20.0",
128
+ "source": {
129
+ "type": "git",
130
+ "url": "https://github.com/composer-php52/composer-php52.git",
131
+ "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
132
+ },
133
+ "dist": {
134
+ "type": "zip",
135
+ "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
136
+ "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
137
+ "shasum": ""
138
+ },
139
+ "time": "2016-04-16T21:52:24+00:00",
140
+ "type": "library",
141
+ "extra": {
142
+ "branch-alias": {
143
+ "dev-default": "1.x-dev"
144
+ }
145
+ },
146
+ "installation-source": "dist",
147
+ "autoload": {
148
+ "psr-0": {
149
+ "xrstf\\Composer52": "lib/"
150
+ }
151
+ },
152
+ "notification-url": "https://packagist.org/downloads/",
153
+ "license": [
154
+ "MIT"
155
+ ]
156
+ },
157
+ {
158
+ "name": "yoast/i18n-module",
159
+ "version": "3.0.0",
160
+ "version_normalized": "3.0.0.0",
161
+ "source": {
162
+ "type": "git",
163
+ "url": "https://github.com/Yoast/i18n-module.git",
164
+ "reference": "76b1645aaf8cf9a07dc06ec0bbe2a6838feeed4c"
165
+ },
166
+ "dist": {
167
+ "type": "zip",
168
+ "url": "https://api.github.com/repos/Yoast/i18n-module/zipball/76b1645aaf8cf9a07dc06ec0bbe2a6838feeed4c",
169
+ "reference": "76b1645aaf8cf9a07dc06ec0bbe2a6838feeed4c",
170
+ "shasum": ""
171
+ },
172
+ "time": "2017-09-06T07:17:52+00:00",
173
+ "type": "library",
174
+ "installation-source": "dist",
175
+ "autoload": {
176
+ "classmap": [
177
+ "src/"
178
+ ]
179
+ },
180
+ "notification-url": "https://packagist.org/downloads/",
181
+ "license": [
182
+ "GPL-2.0+"
183
+ ],
184
+ "authors": [
185
+ {
186
+ "name": "Team Yoast",
187
+ "email": "support@yoast.com",
188
+ "homepage": "https://yoast.com"
189
+ }
190
+ ],
191
+ "description": "Handle i18n for WordPress plugins.",
192
+ "homepage": "https://github.com/Yoast/i18n-module",
193
+ "keywords": [
194
+ "wordpress"
195
+ ]
196
  }
197
  ]